ホームページ > バックエンド開発 > Python チュートリアル > Google 検索リンク Web ページの Python マルチスレッド クロール

Google 検索リンク Web ページの Python マルチスレッド クロール

高洛峰
リリース: 2016-10-18 11:37:06
オリジナル
1725 人が閲覧しました

1) urllib2+BeautifulSoup は Google 検索リンクをキャプチャします

最近、私は Google 検索結果の処理を必要とするプロジェクトに参加しました。以前、Web ページの処理に関連する Python ツールを学習しました。実際のアプリケーションでは、urllib2 と beautifulsoup を使用して Web ページをクロールしますが、Google 検索結果をクロールする場合、Google 検索結果ページのソース コードを直接処理すると、多くの「ダーティ」リンクが取得されることがわかります。

「titanic james」の検索結果については、下の画像をご覧ください:

Google 検索リンク Web ページの Python マルチスレッド クロール

画像内で赤でマークされたものは不要で、青でマークされたものはキャプチャして処理する必要があります。

もちろん、この種の「ダーティ リンク」はルール フィルタリングによって除外できますが、プログラムの複雑さは高くなります。ちょうど私が顔をしかめながらフィルタリングルールを書いていたときでした。クラスメートが私に、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 初心者)。 、 私は感謝するでしょう。

りー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート