2016-07-27 37 views
0

最近、私は仕事中にいくつかのプロジェクトで作業するために多くのPythonを学んできました。Google Search Web Pythonで掻き立てる

現在、私はGoogleの検索結果でいくつかのWebスクレイピングを行う必要があります。私は検索するためにajax google apiを使用する方法をデモンストレーションしたいくつかのサイトを見つけましたが、それを使用しようとした後、サポートされなくなったようです。助言がありますか?

私は方法を見つけるのにかなり時間を掛けていますが、現在動作している解決策を見つけることができないようです。

+0

あなたはAPIなしでGoogleで検索できますが、あなたがボットだと思われる場合はGoogleによって禁止される可能性があります。 TOSを読むと、APIを重要な方法で使用するために料金を支払う可能性が高くなります。 – Ares

+0

私はAPIなしでそれを行う方法を研究しました、私はヘッダー/ユーザーエージェントの情報を変更する必要があります。しかし私がそれをしても、私はまだ結果を得ることができません。それがうまくいくならば、ボットと見なされないように各リクエストの間にスリープタイマーを置くだけです。 – pbell

+0

私はGoogle検索ボットを書いていますが、それは素晴らしいですが、ボットを使うことはGoogleのToSに直接違反しているので、私はそれを投稿するつもりはありません。あなたがしようとしているものは、公式のAPIを参照してください。 – Ares

答えて

2

Googleの検索結果をいつでも直接スクラップすることができます。これを行うには、URL https://google.com/search?q=<Query>を使用すると、上位10個の検索結果が返されます。

たとえば、lxmlを使用してページを解析できます。使用する内容に応じて、結果のノードツリーをCSSセレクタ(.r a)またはXPathセレクタ(//h3[@class="r"]/a)を使用してクエリできます。

場合によっては、結果のURLがGoogleにリダイレクトされることがあります。通常は、実際のリクエストURLを含むクエリパラメータqが含まれています。

lxmlのを使用して実施例のコードとあなたのIPを禁止するGoogleで

from urllib.parse import urlencode, urlparse, parse_qs 

from lxml.html import fromstring 
from requests import get 

raw = get("https://www.google.com/search?q=StackOverflow").text 
page = fromstring(raw) 

for result in pg.cssselect(".r a"): 
    url = result.get("href") 
    if url.startswith("/url?"): 
     url = parse_qs(urlparse(url).query)['q'] 
    print(url[0]) 

ノートを要求:あなたが検索要求でスパムグーグルを開始した場合、私の経験では、Googleが唯一の禁止。あなたがボットだとGoogleが判断した場合、503で応答します。

+0

ありがとう、私はこれに類似した何かを得ることができました。 – pbell

+0

現在、これは私のために働いていません。 Googleの検索結果ページのソースとDOMの構造を見ると、結果がJavaScriptで読み込まれてレンダリングされているように見えます。これは、このような素朴なスクレイピングを防止します。これは他の誰かのために働いていますか? –

+1

@Lane Rettig Worksはうまく動作します。 –

関連する問題