Python-返回一些但不是全部的文本

Python-返回一些但不是全部的文本,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正试图从这本书中摘取美国前100名的工作。当我运行此代码时: import urllib.request from bs4 import BeautifulSoup url = 'https://www.ranker.com/list/most-common-jobs-in-america/american-jobs' page_opened = urllib.request.urlopen(url) soup = BeautifulSoup(page_opened, 'html.parse

我正试图从这本书中摘取美国前100名的工作。当我运行此代码时:

import urllib.request
from bs4 import BeautifulSoup
url = 'https://www.ranker.com/list/most-common-jobs-in-america/american-jobs'
page_opened = urllib.request.urlopen(url)

soup = BeautifulSoup(page_opened, 'html.parser')
jobs_soup = soup.find_all('span','listItem__title')
print(jobs_soup)

《美丽的汤》回报了我所期望的,被标签包围的工作头衔,除了它只给“中学教师”,100份工作中只有25份。我在其他网页上也用过同样的方法,没有任何问题。网页/我的代码是否有任何令人不安的地方导致输出不完整?

当我的浏览器的开发者工具中打开“网络”选项卡时,我看到在滚动时发出了XHR请求,一些响应包含列表项。您只能获取前24项,因为这些请求未被触发。其中一个请求的url为:

通过将限制更改为100,将偏移量更改为0,我能够获得前100个作业:

import json
from urllib.request import urlopen

# I removed the other query parameters and it still seems to work
url = 'https://cache-api.ranker.com/lists/354954/items?limit=100&offset=0'
resp = urlopen(url)
data = json.loads(resp.read())
job_titles = [item['name'] for item in data['listItems']]
print(len(job_titles))
print([job_titles[0], job_titles[-1]])
输出:

100
['Retail salespersons', 'Cleaners of vehicles and equipment']