クローラーをすぐに学びたい場合、学ぶ価値のある言語は Python でなければなりません。Python には、迅速な Web 開発、クローラー、自動化された運用とメンテナンス、 Webサイト、自動投稿スクリプト、メール送受信スクリプト、簡易認証コード認識スクリプトなど簡単に行えます。
クローラーの開発プロセスには再利用のプロセスも多くありますが、今日は将来の時間と労力を節約し、効率的にタスクを完了できる 8 つの必須スキルをまとめます。
import urllib2 url = "http://www.baidu.com" response = urllib2.urlopen(url) print response.read()
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()
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()
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()
cookie = "PHPSESSID=91rurfqm2329bopnosfu4fvmu7; kmsign=55d2c12c9b1e3; KMUID=b6Ejc1XSwPq9o756AxnBAg=" request.add_header("Cookie", cookie)
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)
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 サイトの他の関連記事を参照してください。