Scrapyを使ってみようと思っていますが、まずは「Requests」と「lxml」で試しにWebの情報を取得してみました。
Pythonを使ったWebスクレイピングの第一歩。
#やったこと
- 「Requests」を使ってWebの情報取得
- 「lxml」を使って取得してきたHTMLから必要な情報の抜き出し
##インストール
pip install requests
pip install lxml
##テスト用のHTML
EC2上に配置して、一応インターネット経由でテストしました。
test.html
<html>
<body>
<div id="test1">test1
<ul id="test1_ul">test1 ul</ul>
</div>
</body>
</html>
##スクレイピングのコード
- 引数にURLを渡したら、そのHTMLから処理をする
- User-Agentは念のためMacに変更
(引数がないときのエラー処理等々は実装していません)
scraping.py
import sys
import requests
import lxml.html
#set dummy user-agent
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, like Gecko) Version/10.0.3 Safari/602.4.8'}
#URLを引数で指定
url = ''
if len(sys.argv) > 1:
url = sys.argv[1]
response = requests.get(url, headers = headers)
html = lxml.html.fromstring(response.content)
for div in html.xpath('//*[@id="test1_ul"]') :
print(div.text)
実行コマンドは以下の通り。
引数のURLは任意です。
python scraping.py http://ec2******
##その他
XPathやCSSセレクターをChromeの開発者ツールで容易に取得できるのが便利。