世の中の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を指定してるところをコメントアウトすれば普通の検索になる。