Python 3.x 使用Python抓取多个web页面的结果与第一个页面相同
我的问题是,我试图从CME集团网站上获取产品名称。然而,尽管我更改了循环中的URL,为什么代码不能访问下一页?对此有什么想法和意见吗?提前谢谢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
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页的其他部分吗?很抱歉回复太晚。不,我仍然无法通过您的格式循环浏览下一页。但它确实经历了由#变为#的过程?。