1

私は現在、site:somedomain.comPythonとMechanizeを使用してBINGに次のようなサイト検索を行っています。

bing に問題なく送信し、出力を返しています - Json のように見えますか? 結果をさらに解析する良い方法を見つけられないようです。JSONですか?

次のような出力が得られます。

Link(base_url=u'http://www.bing.com/search?q=site%3Asomesite.com', url='http://www.somesite.com/prof.php?pID=478', text='SomeSite -  Professor Rating of Louis Scerbo', tag='a', attrs=[('href', 'http://www.somesite.com/prof.php?pID=478'), ('h', 'ID=SERP,5105.1')])Link(base_url=u'http://www.bing.com/search?q=site%3Asomesite.com', url='http://www.somesite.com/prof.php?pID=527', text='SomeSite -  Professor Rating of Jahan \xe2\x80\xa6', tag='a', attrs=[('href', 'http://www.somesite.com/prof.php?pID=527'), ('h', 'ID=SERP,5118.1')])Link(base_url=u'http://www.bing.com/search?q=site%3Asomesite.com', url='http://www.somesite.com/prof.php?pID=645', text='SomeSite -  Professor Rating of David Kutzik', tag='a', attrs=[('href', 'http://www.somesite.com/prof.php?pID=645'), ('h', 'ID=SERP,5131.1')])

次のようなすべてのURLを取得したい:

http://www.somesite.com/prof.php?pID=478
http://www.somesite.com/prof.php?pID=527
http://www.somesite.com/prof.php?pID=645

など、その中のurl属性

コード内で mechanize を使用してこれをさらに行うにはどうすればよいですか? 将来、一部の URL は次のようになる可能性があることに注意してください。

http://www.anothersite.com/dir/dir/dir/send.php?pID=100

ありがとうございました !

4

2 に答える 2

0

Python 要求で Microsoft の Azure Datamarket API を使用すると、JSON 文字列を直接要求できます。

import requests, urllib
q = u'Hello World'
q = urllib.quote(q.encode('utf8'), '')
req = requests.get(
    u'https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/Web?$format=JSON&Query=%%27%s%%27' % q,
    auth=('', u'YOU_API_KEY')
)
# print req.json()
results = req.json()['d']['results']
list_of_urls = [ r['Url'] for r in results]        

入力データによっては、「q」の .encode('utf8') 部分が必要な場合と不要な場合があります。「site:xy.com」クエリも機能するはずですが、これはテストしていません。さらに、時折、Bing から奇妙なエンコーディングが返されることがありました。そのため、返された URL を次のように再エンコードする必要がありました。

url = r['Url'].encode('latin1')

しかし、それらは本当に特殊なケースでした...

Azure API (無料) に登録する必要があり、1 か月あたり最大 5000 件の Bing 検索要求が無料です: http://datamarket.azure.com/dataset/bing/search

結果を微調整するためのパラメーターがいくつかあります: http://datamarket.azure.com/dataset/bing/search#schema

于 2013-08-08T13:13:17.217 に答える