2014年05月04日

Bing Search APIにリクエストしてPDFのURLを集めるPythonのコード

世の中のPDFファイルを少し収集したかったので、5000回までなら無料で検索できる優しいBingさんにお願いすることにした。5000回以上のリクエストは有料。1万回だと1570円、10万回15,699円。商用で使うならアリな値段だけど個人ではちょっと手を出しづらい。

5000回ということは日に150回は検索ができる。個人での情報収集用途なら十分な回数。

とりあえず下記サイトに行って、右側の5,000回無料のところでサインアップ。
http://datamarket.azure.com/dataset/bing/search

サインアップできたら、マイ アカウントのマイ データのところからデモができる。

とりあえずPythonでJSONの結果を取るコードを書いてみる。下記のサイトを参考にした。

Bing Search API を使いたいと思ったのでPythonでラッパーを作ってみた
http://o-tomox.hatenablog.com/entry/2013/09/25/191506

Requestsが入ってなければ入れておく。

$ pip3 install requests
import urllib
import requests
import json
import sys

if len(sys.argv) < 2:
  print('Usage: ./bing_search.py search_word [page_count]')
  sys.exit()

query = sys.argv[1]
page_count = 1
if(len(sys.argv) > 2):
  page_count = int(sys.argv[2])
if(page_count < 1):
  raise Exception("invalid page_count {0}".format(page_count))

URL = 'https://api.datamarket.azure.com/Bing/Search/Web?'
API_KEY = 'ここに入手したAPIのキーを書く'

def search( query, page_count ):
  param = {
    '$top' : '50',
    '$format' : 'json',
    'Market' : "'ja-JP'",
    'WebFileType' : "'pdf'",
    'Query' : "'{0}'".format(query)}
  for i in range(0, page_count):
    if i > 0:
      param['$skip'] = 50 * i
    request_url = URL + urllib.parse.urlencode(param)
    #print(request_url)
    response = requests.get(request_url, auth=(API_KEY, API_KEY)).json()
    for item in response["d"]["results"]:
      print(u"{0}\t{1}".format(item['Url'], item['Title']))

search( query, page_count )

これで指定キーワードを含むPDFを検索した結果のURLとタイトルが出力される。

試し打ち。

$ python3 bing_search.py 統計

http://www.miz-ngy.umin.ne.jp/material_h17/koukaikouza_toukei/31page.pdf	2005 統計学の基礎 - 水野智(名古屋大学大学院医学系研究科 ...
http://www.stat.go.jp/info/t-news/pdf/1309.pdf	統計 総務省統計局 統計調査ニュース
http://www.stat.go.jp/data/ssds/pdf/gaiyou.pdf	厚生労働省 「人口動態調査」 統計調査等の概要
http://www.econ.kyoto-u.ac.jp/~iwaki/statistics-3.pdf	基礎統計学 - 京都大学 大学院経済学研究科・経済学部 ...
http://www.mhlw.go.jp/toukei/saikin/hw/jinkou/geppo/nengai07/dl/gaikyou.pdf	平成19年 人口動態統計月報年計(概数)の概況
http://download.microsoft.com/download/4/1/e/41ec00bc-72aa-4ed5-b29f-76728c406e87/9596-NBP1.pdf	総務省統計局
  ・
  ・
  ・

良い感じ。

本例ではPDF限定にしてるけど、paramにWebFileTypeを指定してるところをコメントアウトすれば普通の検索になる。