1) urllib2+BeautifulSoup は Google 検索リンクをキャプチャします
最近、私は Google 検索結果の処理を必要とするプロジェクトに参加しました。以前、Web ページの処理に関連する Python ツールを学習しました。実際のアプリケーションでは、urllib2 と beautifulsoup を使用して Web ページをクロールしますが、Google 検索結果をクロールする場合、Google 検索結果ページのソース コードを直接処理すると、多くの「ダーティ」リンクが取得されることがわかります。
「titanic james」の検索結果については、下の画像をご覧ください:
画像内で赤でマークされたものは不要で、青でマークされたものはキャプチャして処理する必要があります。
もちろん、この種の「ダーティ リンク」はルール フィルタリングによって除外できますが、プログラムの複雑さは高くなります。ちょうど私が顔をしかめながらフィルタリングルールを書いていたときでした。クラスメートが私に、Google は関連する API を提供するべきだと思い出させました。そして、私は突然理解しました。
(2) Google Web Search API + マルチスレッド
このドキュメントでは、Python を使用した検索の例を示しています。
写真で赤でマークされたものは必要なく、青でマークされたものはクロールする必要があります。
もちろん、この種の「ダーティ リンク」はルール フィルタリングによって除外できますが、プログラムの複雑さは高くなります。ちょうど私が顔をしかめながらフィルタリングルールを書いていたときでした。クラスメートが私に、Google は関連する API を提供するべきだと思い出させました。そして、私は突然理解しました。
(2) Google Web Search API + マルチスレッド
このドキュメントでは、Python を使用して検索する例を示しています:
import simplejson # The request also includes the userip parameter which provides the end # user's IP address. Doing so will help distinguish this legitimate # server-side traffic from traffic which doesn't come from an end-user. url = ('https://ajax.googleapis.com/ajax/services/search/web' '?v=1.0&q=Paris%20Hilton&userip=USERS-IP-ADDRESS') request = urllib2.Request( url, None, {'Referer': /* Enter the URL of your site here */}) response = urllib2.urlopen(request) # Process the JSON string. results = simplejson.load(response) # now have some fun with the results... import simplejson # The request also includes the userip parameter which provides the end # user's IP address. Doing so will help distinguish this legitimate # server-side traffic from traffic which doesn't come from an end-user. url = ('https://ajax.googleapis.com/ajax/services/search/web' '?v=1.0&q=Paris%20Hilton&userip=USERS-IP-ADDRESS') request = urllib2.Request( url, None, {'Referer': /* Enter the URL of your site here */}) response = urllib2.urlopen(request) # Process the JSON string. results = simplejson.load(response) # now have some fun with the results..
実際のアプリケーションでは、Google 上の多くの Web ページをクロールする必要がある場合があるため、マルチスレッドを使用する必要があります-threading クロール タスクを共有します。 Google Web Search API の使用方法の詳細なリファレンスについては、ここを参照してください (標準 URL 引数はここで紹介されています)。さらに、URL のパラメータ rsz は 8 未満の値 (8 を含む) でなければならないことに特に注意する必要があります。8 より大きい場合は、エラーが報告されます。
(3) コードの実装
コードの実装にはまだ問題がありますが、実行できますが、堅牢性は低く、改善の必要があるため、専門家の皆様に間違いを指摘していただければ幸いです (Python 初心者)。 、 私は感謝するでしょう。
りー