在urllib3中我应该使用什么来打开url而不是urlopen

时间:2016-04-09 11:33:15

标签: python web-scraping beautifulsoup urllib3

我想写一段代码,如下所示:

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。

5 个答案:

答案 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://...')