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

标签 python web-scraping beautifulsoup

我正在尝试获取列表中每个团队的团队成员数量,现在我获取了所有团队链接,但我想要获取至少有 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/

相关文章:

Python - Python 3.1 似乎无法处理 UTF-16 编码的文件?

python - 查找唯一的子字符串并保留序列

html - 如何通过标签或类一次查找多个元素

Python Beautifulsoup,在标签中获取 href 标签

python - 使用 FFT 分析 Google 趋势时间序列的季节性

python - Alembic - sqlalchemy 初始迁移

javascript - 如何使用 casperjs 登录 Instagram

javascript - phantomjs 不评估 javascript 表

python - 如何从 NFL 赛程表中抓取所有 td 和 tr 数据

Python: AttributeError: 'NoneType' 对象没有属性 'findNext'