PythonのRequestsを使って検索結果を取得する
Contents
検索結果一覧を自動取得したい
検索サービスを提供しているWEBページに対して、検索を実行しその結果ページの内容を取得したいということで、
Pythonを使って検索要求を投げ、その結果ページをスクレイピングするプログラムを実装したいと思います。
環境は「AnacondaでWindows上にPython環境を構築」で構築したWindows上のものを使用します。
PythonのRequestsモジュールを使用します。
RequestsはすでにAnacondaに含まれているようなので、これを使用します。
今回は、Requestsを使って検索リクエストを送信します。
サンプルとして、「python」をYahoo!検索した結果を取得するプログラムを実装してみます。
# -*- coding: utf-8 -*- """ Created on Thu Dec 22 11:14:21 2016 @author: arina """ import requests url = 'http://search.yahoo.co.jp/search' params = {'p':'python', 'search.x':'1', 'fr':'top_ga1_sa', 'tid':'top_ga1_sa', 'ei':'UTF-8', 'aq':'', 'oq':'', 'afs':'',} def send_request(): response = requests.get(url, params) print (response.text) if __name__ == '__main__': send_request()
これだけでできてしまいました。
URLやパラメーターに使用している値は、Yahoo!のソースを見て取得しました。
検索を行うformタグのURLが「http://search.yahoo.co.jp/search」になっていて、
キーワードを入力するボックスが「p」になっていたので、
paramsに「’p’:’python’」を指定します。
paramsのほかの値は、form内でhiddenで設定されていたものを入れました。
検索リクエストを送信するのは、「response = requests.get(url, params)」の1行だけです。
Yahoo!ページ内のformタグのmethodが「get」になっていたので、
「requests.get」を使用します。
引数にurlとparamsを指定するだけです。
検索結果はresponse内に入っているので、テキストとして取り出すには
「response.text」とすればOKです。
びっくりするほど簡単でした。
コメントを残す