Contents
検索結果一覧を自動取得したい
検索サービスを提供しているWEBページに対して、検索を実行しその結果ページの内容を取得したいということで、
Pythonを使って検索要求を投げ、その結果ページをスクレイピングするプログラムを実装したいと思います。
環境は「AnacondaでWindows上にPython環境を構築」で構築したWindows上のものを使用します。
PythonのRequestsモジュールを使用します。
RequestsはすでにAnacondaに含まれているようなので、これを使用します。
今回は、Requestsを使って検索リクエストを送信します。
サンプルとして、「python」をYahoo!検索した結果を取得するプログラムを実装してみます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# -*- 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です。
びっくりするほど簡単でした。