抓取多个网页的结果与使用 Python 的第一页相同



我的问题是我试图从CME集团网站上获取产品名称。但是,为什么代码无法访问下一页,尽管我在循环中更改了 URL?对此有什么想法和意见吗?提前谢谢。

from urllib.request import Request
from urllib.request import urlopen
from bs4 import BeautifulSoup
for i in range(1,6):
url='http://www.cmegroup.com/trading/products/#pageNumber='+str(i)+'&sortAsc=false'
CMEacess=Request(url,headers={'User-Agent':'Mozilla/5.0'})
print(url)
print('page: '+str(i))
CMEpage=urlopen(CMEacess).read()
CMEsoup=BeautifulSoup(CMEpage,'html.parser')
namelist=CMEsoup.findAll('th',attrs={'class','cmeTableLeft'})
for name in namelist:
print(name.get_text())
print('n')

您可以尝试使用请求库而不是urllib。我刚刚使用与您的代码类似的代码成功访问了第 5 页,但存在这种差异。

请注意,文字"D3"出现在第五页上,但不出现在第一页上。

>>> import requests
>>> i = 5
>>> url='http://www.cmegroup.com/trading/products/#pageNumber='+str(i)+'&sortAsc=false'
>>> page = requests.get(url).content
>>> import bs4
>>> soup = bs4.BeautifulSoup(page, 'lxml')
>>> soup.find_all(string='D3')
['D3', 'D3']

最新更新