Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用Python抓取多个web页面的结果与第一个页面相同_Python 3.x_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 3.x 使用Python抓取多个web页面的结果与第一个页面相同

Python 3.x 使用Python抓取多个web页面的结果与第一个页面相同,python-3.x,web-scraping,beautifulsoup,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/#pageNumb

我的问题是,我试图从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']

您可以尝试使用请求库而不是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']

url
中,将
#
替换为有效的
!您能详细说明一下吗?
表示下面是一个查询字符串,因此服务器端脚本会处理参数
pageNumber
sortAsc
。在
url
中,将
替换为
,这是有效的!您能详细说明一下吗?
表示下面是一个查询字符串,因此服务器端脚本会处理参数
pageNumber
sortAsc
。谢谢您提供的信息。但是为什么使用字符串D3与产品名称有关呢?我把代码改成你的格式。但在我改变号码后,结果还是一样。但不知怎的,@t.m.adam起了作用。根据我的经验,请求库通常比urllib库更好。那是我的出发点。这是一个测试,我是否可以使用url的形式,你必须得到第5页的请求。我只是选择了“D3”作为页面中的标记。你的意思是说,用我的答案中的代码,你仍然无法获得第5页的其他部分吗?很抱歉回复太晚。不,我仍然无法通过您的格式循环浏览下一页。但它确实通过了把#改成?.谢谢你提供的信息。但是为什么使用字符串D3与产品名称有关呢?我把代码改成你的格式。但在我改变号码后,结果还是一样。但不知怎的,@t.m.adam起了作用。根据我的经验,请求库通常比urllib库更好。那是我的出发点。这是一个测试,我是否可以使用url的形式,你必须得到第5页的请求。我只是选择了“D3”作为页面中的标记。你的意思是说,用我的答案中的代码,你仍然无法获得第5页的其他部分吗?很抱歉回复太晚。不,我仍然无法通过您的格式循环浏览下一页。但它确实经历了由#变为#的过程?。