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它是。