PythonはlxmlモジュールとRequestsモジュールを使ってHTMLページの教程をキャプチャします。

3003 ワード

Webキャプチャー
WebサイトはHTMLを用いて記述しており、これは各ウェブページが構造化された文書であることを意味する。データを中から取得しながらその構造を維持することが有用である場合がある。ウェブサイトは、csvやjsonのように、常に容易に処理されるフォーマットでデータを提供しない。
これはまさにウェブキャプチャーの出番です。Webキャプチャは、ウェブページのデータをコンピュータプログラムで収集し、必要なフォーマットに整理し、その構造を保存する実践である。
lxmlとRequests
lxml(http://lxml.de/)は、優美な拡張ライブラリであり、XML及びHTMLドキュメントを迅速に解析するために使用されています。処理されたラベルが非常に混乱していても。私たちもレクサスを使います。http://docs.python-requests.org/en/latest/#)モジュールは、内部に構築されたurllib 2モジュールの代わりに、その速度が速く、かつ読み取り可能性が高いためです。ピp install lxmlとpip install requestsコマンドを使用してこの二つのモジュールをインストールすることができます。
以下の導入で始めましょう。

from lxml import html
import requests
次はrequests.getを使ってwebページから私たちのデータを取得します。これを使ってモジュールを解析して結果をtreeに保存します。

page = requests.get('http://econpy.pythonanywhere.com/ex/001.html')
tree = html.fromstring(page.text)
treeは現在、HTMLファイル全体を優雅なツリー構造に含めています。二つの方法でアクセスできます。この例では前者を選択します。
XPTathは、構造化されたドキュメント(HTMLやXMLなど)において情報を位置付けする方式である。XPSについての良い紹介はW 3 Schoolsを参照してください。
多くのツールが元素のXPSを取得できます。例えば、FirefoxのFireBugやChromeのInspectorなどです。Chromeを使うと、右クリックで「Inspect element」を選択して、このコードをハイライトして、もう一度右クリックして、「Copy XPTath」を選択してください。
快速分析を行った後、ページに保存されているデータは二つの要素の中に保存されています。一つはtitleで、「buyer-name」のdivです。もう一つのclassは「item-price」のspanです。

<div title="buyer-name">Carson Busses</div>
<span class="item-price">$29.95</span>
これを知ったら、私たちは正しいXPSクエリを作成し、lxmlのxpath関数を使用して、次のようになります。

#    buyers   :
buyers = tree.xpath('//div[@title="buyer-name"]/text()')
#    prices   :
prices = tree.xpath('//span[@class="item-price"]/text()')
私たちが何を得たかを見せてください。

print 'Buyers: ', buyers
print 'Prices: ', prices
Buyers: ['Carson Busses', 'Earl E. Byrd', 'Patty Cakes',
'Derri Anne Connecticut', 'Moe Dess', 'Leda Doggslife', 'Dan Druff',
'Al Fresco', 'Ido Hoe', 'Howie Kisses', 'Len Lease', 'Phil Meup',
'Ira Pent', 'Ben D. Rules', 'Ave Sectomy', 'Gary Shattire',
'Bobbi Soks', 'Sheila Takya', 'Rose Tattoo', 'Moe Tell']

Prices: ['$29.95', '$8.37', '$15.26', '$19.25', '$19.25',
'$13.99', '$31.57', '$8.49', '$14.47', '$15.86', '$11.11',
'$15.98', '$16.27', '$7.50', '$50.85', '$14.26', '$5.68',
'$15.00', '$114.07', '$10.09']

おめでとうございます私たちはすでにlxmlとRequestを通じてウェブページから私たちが欲しいデータをすべて取り込むことに成功しました。私たちはそれらをリスト形式でメモリに保存します。今はいろんなかっこいいことができます。Pythonを使って分析したり、ファイルとして保存して世界に共有できます。
いくつかのよりクールな考えを考慮することができます。このシナリオを修正して、この例のデータの集中した残りのページを巡回したり、マルチスレッドを使ってこのアプリケーションを書き直したりして、速度を上げることができます。