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

我想写一段代码,像下面这样:

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。

166267 次浏览

您不必安装 urllib3 。您可以选择任何适合您需要的 HTTP 请求生成库,并将响应提供给 BeautifulSoup。选择通常是 requests,因为它有丰富的特性集和方便的 API。可以通过在命令行中输入 pip install requests来安装 requests。下面是一个基本的例子:

from bs4 import BeautifulSoup
import requests


url = "url"
response = requests.get(url)


soup = BeautifulSoup(response.content, "html.parser")

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)

新的 Urllib3库有一个很好的文档 给你
为了得到你想要的结果,你应该这样做:

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'))

“解码 utf-8”部分是可选的。当我尝试时它没有工作,但我张贴的选项无论如何。
来源: < a href = “ http://urllib3.readthedocs.io/en/update/User-Guide.html”rel = “ noReferrer”> User Guide

使用 西班牙凉菜汤,您可以将页面直接管道化为一个可解析的汤对象:

from gazpacho import Soup
url = "http://www.thefamouspeople.com/singers.php"
soup = Soup.get(url)

然后在上面运行发现:

soup.find("div")

在 urlip3中没有 .urlopen,试试这个:

import requests
html = requests.get(url)

您应该使用 urllib.reurequest,而不是 urllib3。

import urllib.request   # not urllib - important!
urllib.request.urlopen('https://...')