Python bs4未获取所有列表项

Python bs4未获取所有列表项,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,例如,代码仅获取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-entit

例如,代码仅获取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自动重定向到预筛选的移动站点

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


谢谢

老实说:我在您编写代码时尝试了几次,我得到了一个包含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。