gpt4 book ai didi

python - 尝试使用 BeautifulSoup 显示网站上的文本

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:24 25 4
gpt4 key购买 nike

我正在尝试获取列表中每个团队的团队成员数量,现在我获取了所有团队链接,但我想要获取至少有 5 个团队的团队的链接,而不是获取所有链接成员。我该怎么做呢?我尝试过,但到目前为止没有任何效果。

    import time
import requests
from bs4 import BeautifulSoup


def get_all(url, base):
r = requests.get(url)
page = r.text

soup = BeautifulSoup(page, 'html.parser')

for team_links in soup.select('div.details h3 a'):
yield base + team_links['href']

next_page = soup.find('div', {'class': 'pages'}).find('span', text='Next')


while next_page:
# Gives the server a break
time.sleep(0.2)

r = requests.get(BASE_URL + next_page.find_previous('a')['href'])
page = r.text
soup = BeautifulSoup(page)
for team_links in soup.select('div.details h3 a'):
yield BASE_URL + team_links['href']
next_page = soup.find('div', {'class': 'pages'}).find('span', text='Next')


if __name__ == '__main__':

BASE_URL = 'http://www.gosugamers.net'
URL = 'http://www.gosugamers.net/counterstrike/teams'

for link in get_all(URL, BASE_URL):
print (link)

最佳答案

找到 Members: 标签,该标签位于树中团队链接后面的位置。然后,获取团队成员值,转换为整数并检查是否小于5:

for team_links in soup.select('div.details h3 a'):
members = int(team_links.find_next("th", text="Members:").find_next_sibling("td").text.strip())
if members < 5: # skip teams with less than 5 members
continue
yield base + team_links['href']

请注意,如果存在 1 (Pending: 1) 而不是整数值,则会失败。根据您是否想要计算待处理的团队成员,可能会有不同的逻辑处理。

例如,如果您不想计算待处理的团队成员,我们可以按空格分割并获取第一项,忽略“待处理”中的内容:

for team_links in soup.select('div.details h3 a'):
members = int(team_links.find_next("th", text="Members:").find_next_sibling("td").text.strip().split()[0])
# ...

关于python - 尝试使用 BeautifulSoup 显示网站上的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37737567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com