我正在尝试从列表中的每个团队获得团队成员的数量,现在我获得所有团队链接,但不是获取所有链接我想要获得至少有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)
答案 0 :(得分:1)
在团队链接后找到树中更远的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)
而不是整数值,则会失败。根据您是否要计算待处理的团队成员,可能会有不同的逻辑处理。
例如,如果您不想计算待处理的团队成员,我们可以按空格分割并获取第一项,忽略内部&#34;待定&#34;:
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])
# ...