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

Python 在urllib3中,我应该使用什么来打开url而不是urlopen,python,web-scraping,beautifulsoup,urllib3,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包 此外,我找不到任何教程或示例来理解如何重写上述代码,例如,urlib3没有urlopen 有什么解释或例子吗 p/S:我使用

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

from bs4 import BeautifulSoup
import urllib2

url = 'http://www.thefamouspeople.com/singers.php'
html = urllib2.urlopen(url)
soup = BeautifulSoup(html)
但是我发现我现在必须安装
urllib3

此外,我找不到任何教程或示例来理解如何重写上述代码,例如,
urlib3
没有
urlopen

有什么解释或例子吗

p/S:我使用的是python 3.4。

您不必安装
urllib3
。您可以选择任何适合您需要的HTTP请求生成库,并将响应提供给
BeautifulSoup
。不过,这种选择通常是因为丰富的功能集和方便的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有很多附加功能,如果您需要,可以重复使用连接。文件如下:

如果您想使用urllib3,您需要
pip安装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”部分是可选的。当我尝试时,它在没有它的情况下工作,但我还是发布了选项。
来源:

使用,您可以将页面直接导入可解析的soup对象:

来自gazpacho进口汤的

url=”http://www.thefamouspeople.com/singers.php"
soup=soup.get(url)
并在其上运行“查找”:

soup.find(“div”)

在urlip3中没有
.urlopen
,请尝试以下操作:

导入请求
html=请求.get(url)

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

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

示例运行时,为什么必须安装urllib3?因为它不适用于我,所以找不到urllib2。@niloofar Python 3.4将urllib2命名为urllib<代码>从urllib导入urlopen应适用于这种情况。不要使用urllib3。执行此操作:
import urllib.request
urllib.request.urlopen('https://...)
FWIW,如果要使用请求,仍然需要安装请求。它们都不是Python自带的。请求依赖于urllib3。
response.read()
至少在Python 2.7中不起作用。根据文档,它应该是
html=response.data
。请求只需在scenes@PirateApp它是。