LoginSignup
7
9

More than 5 years have passed since last update.

「Requests」と「lxml」を使ってWebの情報を取得してみた

Posted at

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の開発者ツールで容易に取得できるのが便利。

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9