ホームページ >バックエンド開発 >Python チュートリアル >良心の推薦! Python クローラーマスターに必須の 8 つのスキル!
クローラーをすぐに学びたい場合、学ぶ価値のある言語は Python でなければなりません。Python には、迅速な Web 開発、クローラー、自動化された運用とメンテナンス、 Webサイト、自動投稿スクリプト、メール送受信スクリプト、簡易認証コード認識スクリプトなど簡単に行えます。
クローラーの開発プロセスには再利用のプロセスも多くありますが、今日は将来の時間と労力を節約し、効率的にタスクを完了できる 8 つの必須スキルをまとめます。
import urllib2 url = "http://www.baidu.com" response = urllib2.urlopen(url) print response.read()post メソッド
import urllib import urllib2 url = "http://abcde.com" form = {'name':'abc','password':'1234'} form_data = urllib.urlencode(form) request = urllib2.Request(url,form_data) response = urllib2.urlopen(request) print response.read()2. プロキシ IP の使用 クローラーの開発プロセスでは、IP がブロックされる状況がよく発生します。この場合、プロキシ IP を使用する必要があります。urllib2 パッケージには ProxyHandler クラスがあり、このクラスを通じてプロキシを設定できます。次のコード スニペットに示すように、Web ページにアクセスします:
import urllib2 proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8087'}) opener = urllib2.build_opener(proxy) urllib2.install_opener(opener) response = urllib2.urlopen('http://www.baidu.com') print response.read()3. Cookie の処理Cookie は、一部の Web サイトによってユーザーのローカル端末に保存される (通常は暗号化された) データです。ユーザーの ID を識別し、セッション追跡を実行します。Python は、Cookie を処理するための cookielib モジュールを提供します。cookielib モジュールの主な機能は、インターネットにアクセスするために urllib2 モジュールと組み合わせて使用できるように、Cookie を保存できるオブジェクトを提供することです。リソース。 WeChat で公開アカウントを検索: Architect Guide、返信: Architect Get Information。
import urllib2, cookielib cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar()) opener = urllib2.build_opener(cookie_support) urllib2.install_opener(opener) content = urllib2.urlopen('http://XXXX').read()キーは CookieJar() で、HTTP Cookie 値の管理、HTTP リクエストによって生成された Cookie の保存、発信 HTTP リクエストへの Cookie オブジェクトの追加に使用されます。 . . Cookie 全体はメモリに保存され、CookieJar インスタンスのガベージ コレクション後に Cookie は失われます。すべてのプロセスを個別に操作する必要はありません。
cookie = "PHPSESSID=91rurfqm2329bopnosfu4fvmu7; kmsign=55d2c12c9b1e3; KMUID=b6Ejc1XSwPq9o756AxnBAg=" request.add_header("Cookie", cookie)4. ブラウザに偽装するWeb サイトによっては、クローラーの訪問を嫌がるため、クローラーからのリクエストを拒否します。したがって、urllib2 を使用して Web サイトに直接アクセスすると、HTTP エラー 403: 禁止が頻繁に発生します。
import urllib2 headers = { 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' } request = urllib2.Request( url = 'http://my.oschina.net/jhao104/blog?catalog=3463517', headers = headers ) print urllib2.urlopen(request).read()
5. ページ解析
2 つ目は解析ライブラリで、一般的に使用される 2 つは次のとおりです。 lxml と BeautifulSoup
これら 2 つのライブラリについて、私の評価としては、どちらも HTML/XML 処理ライブラリであると言えます。Beautifulsoup は純粋に Python で実装されており、非効率ではありますが、実用的な機能を備えています。 HTML ノードのソース コードは検索結果から取得できます。lxml C 言語コーディングは効率的で、Xpath をサポートしています。
6. 認証コードの処理
7. Gzip 圧縮
しかし、一般的に、圧縮データを処理できることをサーバーに伝えない限り、サーバーは圧縮データを送信しません。
したがって、次のようにコードを変更する必要があります:
import urllib2, httplib request = urllib2.Request('http://xxxx.com') request.add_header('Accept-encoding', 'gzip') opener = urllib2.build_opener() f = opener.open(request)これが重要です: Request オブジェクトを作成し、Accept-encoding ヘッダーを追加して、サーバーに次のことを伝えます。 gzip 圧縮データを受け入れることができます。
import StringIO import gzip compresseddata = f.read() compressedstream = StringIO.StringIO(compresseddata) gzipper = gzip.GzipFile(fileobj=compressedstream) print gzipper.read()
8. マルチスレッドの同時クロール
Python のマルチスレッドは役に立ちませんが、ネットワークを頻繁に使用するクローラの効率をある程度向上させることができます。
うわー
以上が良心の推薦! Python クローラーマスターに必須の 8 つのスキル!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。