web-dev-qa-db-ja.com

urllib3でurlopenの代わりにurlを開くために何を使うべきですか

次のようなコードを書きたいと思いました。

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を使用しています。

44
niloofar

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)
44
shazow

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")
29
alecxe

新しいurllib3ライブラリにはNiceドキュメントがあります 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」の部分はオプションです。私が試したとき、それなしで機能しましたが、とにかくオプションを投稿しました。
出典: ユーザーガイド

7
Lan Vukušič