こんにちは、3年のまるです。アドベントカレンダー20日目です。
前回は、@hcpmiyukiさん(先輩)の【GCP】【Python】Google Cloud FunctionsでサーバーレスにAPIをデプロイ!でした!
最近はあまり外出していないので、コロナが収まったら美味しいご飯を食べにいきたいです。
よろしくお願いします。
目標
映画.comのホームページから今人気の映画のタイトルと公開日を数行のコードでスクレイピングします。
方法
Webスクレイピングには色々なやり方がありますが、今回はめっちゃ簡単な、XPathとCSSセレクターを利用する方法でやっていきます。
初めてスクレイピングする方は一度この方法でやってみて欲しいです!爆速で出来ます
準備
ライブラリをインストールします。
Requests、lxml、cssselectの3つを使います。
$ pip install requests
$ pip install lxml
$ pip install cssselect
CSSセレクターとXpathの確認方法
Chromeのデベロッパーツールを使います。
要素を右クリック > Copy > Copy XPath(または Copy selector)
でコピーできます。
実際にコードを書く
コードはこれだけです。少なくて素敵!関数使うと尚良きですね。
import requests
import lxml.html
#映画.comのURLを指定して、HTMLソースを得る
r = requests.get("https://eiga.com/ranking/")
html = r.text
#HTMLをHtmlElementオブジェクトにする
root = lxml.html.fromstring(html)
print("映画ランキング第1位")
#Xpathを指定して、映画タイトルをスクレイピング
rank1_title = root.xpath("//*[@id='document_2575126293']/main/div/div/section[1]/table/tbody/tr[1]/td[2]/div/h2/a")
print(rank1_title[0].text)
#CSSセレクターで指定して、公開日をスクレイピング
rank1_day = root.cssselect("#document_2575126293 > main > div > div > section:nth-child(4) > table > tbody > tr:nth-child(1) > td.img > small")
print(rank1_day[0].text)
#2位, 3位も同様にコードを書きます
print('----------------------------')
print("映画ランキング第2位")
rank2_title = root.xpath("//*[@id='document_2575126293']/main/div/div/section[1]/table/tbody/tr[2]/td[2]/div/h2/a")
print(rank2_title[0].text)
rank2_day = root.cssselect("#document_2575126293 > main > div > div > section:nth-child(4) > table > tbody > tr:nth-child(2) > td.img > small")
print(rank2_day[0].text)
print('----------------------------')
print("映画ランキング第3位")
rank3_title = root.xpath("//*[@id='document_2575126293']/main/div/div/section[1]/table/tbody/tr[3]/td[2]/div/h2/a")
print(rank3_title[0].text)
rank3_day = root.cssselect("#document_2575126293 > main > div > div > section:nth-child(4) > table > tbody > tr:nth-child(3) > td.img > small")
print(rank3_day[0].text)
#結果
実行すると、
映画ランキング第1位
劇場版「鬼滅の刃」無限列車編
劇場公開日:2020年10月16日
----------------------------
映画ランキング第2位
新解釈・三國志
劇場公開日:2020年12月11日
----------------------------
映画ランキング第3位
天外者(てんがらもん)
劇場公開日:2020年12月11日
うまく取ってこれました!
おわりに
読んでくれてありがとうございました。
間違っている点などございましたら、ご指摘いただけると嬉しいです!
#参考文献
-
Pythonによるクローラー&スクレイピング入門 設計・開発から収集データの解析・運用まで ( 著者:加藤勝也 , 横山祐季 )