我想写一段代码,如下所示:
from bs4 import BeautifulSoup
import urllib2
url = 'http://www.thefamouspeople.com/singers.php'
html = urllib2.urlopen(url)
soup = BeautifulSoup(html)
但我发现我现在必须安装urllib3
包。
此外,我找不到任何教程或示例来了解如何重写上述代码,例如,urllib3
没有urlopen
。
请问任何解释或示例?!
P / S:我正在使用python 3.4。
答案 0 :(得分:36)
urllib3是与urllib和urllib2不同的库。如果需要,它还有标准库中urllib的许多附加功能,例如重用连接。文档在这里:https://urllib3.readthedocs.org/
如果您想使用urllib3,则需要pip install urllib3
。一个基本的例子如下:
from bs4 import BeautifulSoup
import urllib3
http = urllib3.PoolManager()
url = 'http://www.thefamouspeople.com/singers.php'
response = http.request('GET', url)
soup = BeautifulSoup(response.data)
答案 1 :(得分:6)
新的 urllib3 库有一个很好的文档here
为了得到你想要的结果,你可以遵循:
Import urllib3
from bs4 import BeautifulSoup
url = 'http://www.thefamouspeople.com/singers.php'
http = urllib3.PoolManager()
response = http.request('GET', url)
soup = BeautifulSoup(response.data.decode('utf-8'))
“decode utf-8”部分是可选的。当我尝试时,它没有它,但无论如何我发布了选项 资料来源:User Guide
答案 2 :(得分:0)
使用gazpacho,您可以将页面直接传递到可解析的汤对象中:
from gazpacho import Soup
url = "http://www.thefamouspeople.com/singers.php"
soup = Soup.get(url)
在其上运行查找:
soup.find("div")
答案 3 :(得分:0)
在 urlip3 中没有 .urlopen
,而是试试这个:
import requests
html = requests.get(url)
答案 4 :(得分:0)
您应该使用 urllib.reuqest,而不是 urllib3。
import urllib.request # not urllib - important!
urllib.request.urlopen('https://...')