我正在尝试更新使用Anaconda的Python的Python3中的Beautiful 4来使用请求包而不是urllib、urllib2和urllib3的web刮板应用程序。
Anaconda通道中不存在urllib和urllib2,据我所读,请求包已使urllib和urllib2过时。对于web抓取,我仍然是Python编程方面的新手,并且还没有完全理解这4个包的所有概念和内部微妙之处。
当我将"urllib2.urlopen()“替换为"requests.get()”时,会得到以下错误:
从bs4导入BeautifulSoup导入请求
'''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环境。
谢谢。
富足
发布于 2018-09-09 08:50:19
出现此错误是因为您试图以错误的方式传递响应的html代码。传递response.text
,而不是响应对象:
# page = urllib2.urlopen(url)
page = requests.get(url)
soup_page = BeautifulSoup(page.text, "lxml")
您可能需要阅读请求文件
https://stackoverflow.com/questions/52242548
复制相似问题