2016-04-09 3 views
21

にurlopenの代わりに何を使用する必要があります私はこのような...前のようなコードを書きたい:iはurllib3

from bs4 import BeautifulSoup 
import urllib2 

url = 'http://www.thefamouspeople.com/singers.php' 
html = urllib2.urlopen(url) 
soup = BeautifulSoup(html) 

しかし、私は今urllib3をインストールする必要がありました。

coudntfind上記のコードを書き直す方法を理解するためのチュートリアルや例。たとえば、urllib3にはurlopenはありません。

何か説明や例をお願いします。

私はpython 3.4を使用しています。

+1

サンプルが動作すると、なぜurllib3をインストールする必要がありますか? – Deusdeorum

+1

私にとってはうまくいかないので、urllib2は見つかりませんでした。 – niloofar

+1

@niloofar Python 3.4には、urllibという名前のurllib2があります。 'from urllib import urlopen'はこの場合に動作します。 –

答えて

6

urllib3をインストールする必要はありません。あなたのニーズに合ったHTTPリクエスト作成ライブラリを選択し、応答をBeautifulSoupに送ることができます。豊富な機能と便利なAPIのため、通常はrequestsです。コマンドラインにpip install requestsと入力してrequestsをインストールできます。これは基本的な例です:

from bs4 import BeautifulSoup 
import requests 

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

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

FWIW、依頼を使用する場合は依然として_install_要求が必要です。どちらもPythonでネイティブにはなりません。 – shazow

17

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) 
+0

'response.read()'は少なくともPython 2.7では動作しません。ドキュメントhttps://urllib3.readthedocs.io/en/latest/user-guide.htmlに従って、 'html = response.data'にする必要があります。 – RajeshM

+0

ありがとう、私はそれを更新しました。 – shazow

2

新しいurllib3ライブラリは、あなたがそれに従うshuldご希望の結果を得るために素敵なドキュメント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')) 

「デコードUTF -8 "の部分はオプションです。とにかく私が試してみたが、それを使わずに働いたが、私はオプションを投稿した。
ソース:User Guide