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で応答します。
あなたはAPIなしでGoogleで検索できますが、あなたがボットだと思われる場合はGoogleによって禁止される可能性があります。 TOSを読むと、APIを重要な方法で使用するために料金を支払う可能性が高くなります。 – Ares
私はAPIなしでそれを行う方法を研究しました、私はヘッダー/ユーザーエージェントの情報を変更する必要があります。しかし私がそれをしても、私はまだ結果を得ることができません。それがうまくいくならば、ボットと見なされないように各リクエストの間にスリープタイマーを置くだけです。 – pbell
私はGoogle検索ボットを書いていますが、それは素晴らしいですが、ボットを使うことはGoogleのToSに直接違反しているので、私はそれを投稿するつもりはありません。あなたがしようとしているものは、公式のAPIを参照してください。 – Ares