如何移植使用Beautiful Soup 4的python urllib2 app(一个web scraper)来代替使 用请求包

问题描述 投票:1回答:1

我正在尝试更新使用Anaconda中的Python 3中的Beautiful Soup 4的web scraper应用程序来使用Requests包而不是urllib,urllib2和urllib3。

urllib和urllib2在Anaconda频道中不存在,而且我读过的请求包已经使urllib和urllib2过时了。我仍然是用于Web抓取的Python编程的新手,并且尚未完全理解这4个包的所有概念和内部细微之处。

当我用“requests.get()”替换“urllib2.urlopen()”时,我收到以下错误:

从bs4导入BeautifulSoup导入请求

'''replace the following line with "page =  Request.get(url)" '''
#   page = urllib2.urlopen(url)
page = requests.get(url)
soup_page = BeautifulSoup(page,"lxml")

我在bs4模块中收到以下错误消息,但没有解释:文件“C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ bs4__init __。py”,第246行,在init elif len(标记)<= 256和(

TypeError:“Response”类型的对象没有len()

这个错误消息让我深入bs4中init.py的内容。

我找不到如何使用Beautiful Soup 4将urllib或urllib2代码移植到请求的解释。

任何人都可以提供一个明确的指导如何移植urllib / urllib2应用程序以使用Python 3中的漂亮汤的请求?

Anaconda / conda不会将urllib或urllib2导入Python 3环境。

谢谢。

丰富

python-requests urllib2 urllib
1个回答
1
投票

发生错误是因为您试图以错误的方式将响应的html代码传递给Beautifulsoup。传递response.text,而不是响应对象:

# page = urllib2.urlopen(url)

page = requests.get(url)

soup_page = BeautifulSoup(page.text, "lxml")

你可能需要阅读requests documentation

© www.soinside.com 2019 - 2024. All rights reserved.