首页 文章

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

提问于
浏览
0

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

urllib和urllib2在Anaconda Channels 中不存在,并且从我读过的请求包已经使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环境 .

谢谢 .

丰富

1 回答

  • 0

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

    # page = urllib2.urlopen(url)
    
    page = requests.get(url)
    
    soup_page = BeautifulSoup(page.text, "lxml")
    

    你可能需要阅读requests documentation

相关问题