【问题标题】:bs4 not getting all list itemsbs4没有得到所有列表项
【发布时间】:2020-08-17 11:42:49
【问题描述】:

Using the following url 为例,代码只获取了 35 个项目,而不是页面上列出的 85 个项目。这是必须使用 selenium 加载视图源页面的情况吗? bs4 怎么会漏掉剩下的 li 项呢?

r = requests.get(url=url)
soup = bs(r.text, 'html.parser')
jobkeys = []
jobs = soup.findAll("li", {"class": "cmp-JobListItem"})
for job in jobs:
    s = job.attrs.get('data-tn-entityid')
    jobkey = s[s.find(',')+1:s.rfind(',')]
    jobkeys.append(jobkey)

编辑:

使用 selenium,我能够“看到”页面加载时发生的情况。 URL 自动重定向到预过滤的移动站点。

有了这个新网站,我可以删除过滤器,获取新网址并获得正确的号码。

谢谢!

【问题讨论】:

    标签: python beautifulsoup python-requests


    【解决方案1】:

    老实说:我尝试了你的代码,因为你写了好几次,我得到了一个包含 85 项的列表:不多也不少。所以我不确切知道如何回答第二个问题,但我可以回答第一个问题:不,您不必使用其他其他软件包来实现您想要的:问题出在其他地方。可以肯定的是,我将在此处复制粘贴我刚刚运行的完整代码:

    from bs4 import BeautifulSoup as bs
    import requests
    
    r = requests.get(url='https://ca.indeed.com/cmp/Abb/jobs')
    soup = bs(r.text, 'html.parser')
    jobkeys = []
    jobs = soup.findAll("li", {"class": "cmp-JobListItem"})
    for job in jobs:
        s = job.attrs.get('data-tn-entityid')
        jobkey = s[s.find(',')+1:s.rfind(',')]
        jobkeys.append(jobkey)
    
    print(len(jobkeys))
    

    输出:

    85
    

    【讨论】:

    • 我最初尝试导入请求;然后,为了尝试每一个最小的组合,我尝试了没有,但它仍然有效。
    • 我想是因为 IDE。我现在要编辑
    • 我刚刚在请求的原始结果 (r.text) 上搜索了 class="cmp-JobListItem",发现了 84 个匹配项。
    • 为了排除任何污染,我只在终端上尝试过,将代码逐行复制到这里:85。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2020-09-07
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多