首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何移植使用Beautiful 4的python urllib2应用程序(一个web刮刀)来代替请求包

如何移植使用Beautiful 4的python urllib2应用程序(一个web刮刀)来代替请求包
EN

Stack Overflow用户
提问于 2018-09-09 08:07:00
回答 1查看 131关注 0票数 1

我正在尝试更新使用Anaconda的Python的Python3中的Beautiful 4来使用请求包而不是urllib、urllib2和urllib3的web刮板应用程序。

Anaconda通道中不存在urllib和urllib2,据我所读,请求包已使urllib和urllib2过时。对于web抓取,我仍然是Python编程方面的新手,并且还没有完全理解这4个包的所有概念和内部微妙之处。

当我将"urllib2.urlopen()“替换为"requests.get()”时,会得到以下错误:

从bs4导入BeautifulSoup导入请求

代码语言:javascript
运行
复制
'''replace the following line with "page =  Request.get(url)" '''
#   page = urllib2.urlopen(url)
page = requests.get(url)
soup_page = BeautifulSoup(page,"lxml")

我得到以下错误消息,在"C:\ProgramData\Anaconda3\lib\site-packages\bs4__init__.py",模块中没有任何解释:文件bs4第246行,在init elif (标记) <= 256和(

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

这条错误消息使我深入了解了init.py in bs4。

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

有人能提供一个关于如何移植urllib / urllib2应用程序以使用Python3中漂亮汤请求的明确指南吗?

Anaconda / conda不将urllib或urllib2导入Python3环境。

谢谢。

富足

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-09 08:50:19

出现此错误是因为您试图以错误的方式传递响应的html代码。传递response.text,而不是响应对象:

代码语言:javascript
运行
复制
# page = urllib2.urlopen(url)

page = requests.get(url)

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

您可能需要阅读请求文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52242548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档