【スクレイピング】lxmlとcssselectを使用したスクレイピング

公開日:2019-01-26
最終更新:2019-01-26
※この記事は外部サイト(https://hk-ryukyu.club/hideto/archives/864)からのクロス投稿です

スクレイピング準備記事

【やりたいこと】便利なライブラリを使用してスクレイピングしてみたい!


前回は、ライブラリを使用して、Webページを取得しました。

今回は、スクレイピングを便利なライブラリを使用して、行ってみましょう。

 

【10分でできる】lxmlとcssselectを使用


※ダウンロード時間は10分の中に含まれていません。

0.概要


lxmlcssselectをインストールします。次に、Webページを取得・保存します。最後にサンプルコードを実行し、WebページのURLとリンクのテキストを表示させます。

1.使用したもの


・Virtual box

https://www.virtualbox.org/

・Vagrant

https://www.vagrantup.com/

・Term Term

https://ja.osdn.net/projects/ttssh2/

・Python3.4

・lxml

cssselect

2.手順


※下記の記事の内容を完了しているものとして、進めていきます。

http://hk-ryukyu.club/hideto/archives/770

http://hk-ryukyu.club/hideto/archives/794

①lxmlとcssselectのインストール


sudo apt-get install -y libxml2-dev libxslt-dev libpython3-dev zlib1g-dev

lxmlとcssselectのインストール前に、上記を実行しましょう。

pip install lxml

上記を入力し、実行することで、lxmlをインストールしましょう。

pip install cssselect

上記を入力し、実行することで、cssselectをインストールしましょう。

lxmlのインストールがうまくいかない場合は、仮想マシンのメモリーを増やしてみてください。下記に参考記事をのせておきます。
http://hk-ryukyu.club/hideto/archives/877

②Webページの取得と保存


wget <取得したいWebページのURL>

上記を実行することで、index.htmlというファイルが共有フォルダに作成されます。

共有フォルダを確認すると、index.htmlが保存されていることが分かります。

③Pythonスクリプトファイルの実行

import lxml.html  

#HTMLファイルを読み込み、getroot()メソッドでHtmlElementオブジェクトを得る。
tree = lxml.html.parse(‘index.html’)
html = tree.getroot()

#cssselect()メソッドでa要素のリストを取得して、個々のa要素に対して処理を行う。
for a in html.cssselect(‘a’):
#href属性とリンクのテキストを取得して表示する。
print(a.get(‘href’), a.text)


Pythonクローリング&スクレイピング

「Pythonクローリング&スクレイピング」のサンプルコードscrape_by_lxml.pyを使用します。

上記のコードでは、正規表現ではなく、cssselectで抜き出す文字列を指定しています。


スクリプトファイルを実行します。

python scrape_by_lxml.py

上記を実行することで、a要素のURLとリンクのテキストが表示されました。

テキストが存在しないところは、Noneと表示されています。

詳細

画像が見づらい場合は、以下のリンク先に移動することをおすすめします。

https://hk-ryukyu.club/hideto/archives/864

【最後に】参考図書の紹介


以下の書籍は、私がPythonスクレイピングを勉強するにあたって、使用した書籍です。

「Python逆引き大全」は、秀和システムの技術書読み放題サービス「10×Eng」で読めます。最初の2週間は無料、それ以降は、月額900円で利用できます。

「プログラミング超初心者が初心者になるためのPython入門」はkindle unlimitedで読めます。

https://www.amazon.co.jp/Pythonクローリング%EF%BC%86スクレイピング-―データ収集・解析のための実践開発ガイド―-加藤-耕太-ebook/dp/B01NGWKE0P/ref=sr_1_2?s=digital-text&ie=UTF8&qid=1547444558&sr=1-2&keywords=%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0

https://www.amazon.co.jp/現場ですぐに使える%EF%BC%81-Pythonプログラミング逆引き大全-313の極意-金城俊哉-ebook/dp/B07CKW7HRT/ref=sr_1_12?s=digital-text&ie=UTF8&qid=1547444718&sr=1-12&keywords=Python

https://www.amazon.co.jp/プログラミング超初心者が初心者になるためのPython入門%EF%BC%88%EF%BC%91%EF%BC%89-セットアップ・文字列・数値編-たっく-ebook/dp/B00SH9TZV6/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1547444851&sr=1-1&keywords=Python+%E8%B6%85%E5%88%9D%E5%BF%83%E8%80%85

https://www.amazon.co.jp/プログラミング超初心者が初心者になるためのPython入門%EF%BC%88%EF%BC%92%EF%BC%89-リスト・タプル・ディクショナリ・if・-ループ編-たっく-ebook/dp/B00UTE7IVQ/ref=pd_sim_351_1/357-6861445-6074822?_encoding=UTF8&pd_rd_i=B00UTE7IVQ&pd_rd_r=f08ac831-17bf-11e9-8614-61eb2314ce97&pd_rd_w=GVCNp&pd_rd_wg=yAeJA&pf_rd_p=b79503b3-46ea-4244-8b06-2f14c40a97b1&pf_rd_r=1AE1MZJDDH5WGG46MKQF&psc=1&refRID=1AE1MZJDDH5WGG46MKQF

https://www.amazon.co.jp/プログラミング超初心者が初心者になるためのPython入門%EF%BC%88%EF%BC%93%EF%BC%89-関数・クラス編-たっく-ebook/dp/B014MQPCZA/ref=pd_sim_351_1/357-6861445-6074822?_encoding=UTF8&pd_rd_i=B014MQPCZA&pd_rd_r=faeda057-17bf-11e9-bc59-41dcf0bf4f18&pd_rd_w=sZ3Tw&pd_rd_wg=sCE0Q&pf_rd_p=b79503b3-46ea-4244-8b06-2f14c40a97b1&pf_rd_r=0P47J0THKB3M6SXP5XWF&psc=1&refRID=0P47J0THKB3M6SXP5XWF

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
パソコン関連で役に立った情報を発信します

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする