ホームページ  >  記事  >  バックエンド開発  >  Python クローラーはブラウザー Cookie を使用します: browsercookie

Python クローラーはブラウザー Cookie を使用します: browsercookie

JUAN
JUANオリジナル
2019-02-18 10:47:362879ブラウズ


Python を使用する多くの人は Web クローラーを作成したことがあると思いますが、ネットワーク データを自動的に取得することは確かに楽しいことであり、Python は非常に役立ちます。しかし、クローラーはログインや検証のさまざまな障害に遭遇することが多く、イライラさせられます (ウェブサイト: 毎日さまざまなクローラーが Web サイトを取得しているのにも遭遇して非常にイライラします~)。爬虫類と対爬虫類はイタチごっこのようなもので、片方の足がもう片方の足よりも高く、何度も絡み合います。

http プロトコルのステートレスな性質により、ログイン検証は Cookie を渡すことによって実装されます。ブラウザでログインすると、ログイン情報のCookieがブラウザに保存されます。次回 Web サイトを開くと、ブラウザは保存された Cookie を自動的に取得し、Cookie の有効期限が切れない限り、Web サイトにログインしたままになります。

browsercookie モジュールは、ブラウザーから保存された cookie を抽出するためのツールです。これは、ブラウザの Cookie を cookiejar オブジェクトに読み込むことで、ログインが必要な Web コンテンツを簡単にダウンロードできる非常に便利なクローラー ツールです。

インストール

pip install browsercookie

Windows システムでは、FireFox データベースをロードするときに、組み込みの sqlite モジュールがエラーをスローします。 sqlite のバージョンを更新する必要があります:
pip install pysqlite

使用方法

Web ページからタイトルを抽出する例を次に示します:

>>> import re
>>> get_title = lambda html: re.findall(&#39;<title>(.*?)</title>&#39;, html, flags=re.DOTALL)[0].strip()

以下はログインせずにダウンロードされます。 Title:

>>> import urllib2
>>> url = &#39; 
>>> public_html = urllib2.urlopen(url).read()
>>> get_title(public_html)&#39;Git and Mercurial code management for teams&#39;

次に、browsercookie を使用して、Bitbucket にログインしている FireFox から Cookie を取得してダウンロードします。

>>> import browsercookie
>>> cj = browsercookie.firefox()
>>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
>>> login_html = opener.open(url).read()
>>> get_title(login_html)&#39;richardpenman / home &mdash; Bitbucket&#39;

上記は、 Python2、Python3 をもう一度試してください:

>>> import urllib.request
>>> public_html = urllib.request.urlopen(url).read()
>>> opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

ユーザー名がタイトルに表示されていることがわかります。これは、browsercookie モジュールが FireFox から cookie を正常にロードしたことを意味します。

以下はリクエストの使用例です。今回は Chrome から Cookie を読み込みます。もちろん、事前に Chrome で Bitbucket にログインする必要があります:

>>> import requests
>>> cj = browsercookie.chrome()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)&#39;richardpenman / home &mdash; Bitbucket&#39;

ログインしていない場合どのブラウザを使用しているか知っているかどうかは関係ありません Cookie が必要な場合は、これを行うことができます:

>>> cj = browsercookie.load()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)&#39;richardpenman / home &mdash; Bitbucket&#39;

Support

現在、このモジュールは次のプラットフォームをサポートしています:

Chrome: Linux 、OSX、Windows
Firefox: Linux 、OSX、Windows

現在、このモジュールがテストしているブラウザのバージョンは多くありません。使用中に問題が発生する可能性があります。作成者に質問を送信できます:

https://bitbucket .org/richardpenman/browsercookie/



##

以上がPython クローラーはブラウザー Cookie を使用します: browsercookieの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。