スポンサードリンク

検索結果一覧を自動取得したい

検索サービスを提供している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です。

びっくりするほど簡単でした。

スポンサードリンク