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

时间:2017-08-13 20:04:45

标签: python-3.x web-scraping beautifulsoup

我的问题是我尝试从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')

1 个答案:

答案 0 :(得分:0)

您可以尝试使用请求库而不是urllib。我只是使用类似于你的代码成功访问了第5页,并且有这种差异。

请注意,文字'D3'出现在第5页,但不在第1页。

>>> 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']