1

次の方法で Google の検索結果をスクレイピングできないのはなぜですか?

をスローする応答を開こうとして失敗していHTTPErrorます。私は他の質問を見てきましたが、私が知る限り、エンコードなどを適切に行っています。

私はキャッチエラーなどを含めていないことを知っています.これは単なる縮小版です.

def scrape_google(query):

    url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&"
    headers = {'User-Agent': 'Mozilla/5.0'}
    search = urllib.parse.urlencode({'q': " ".join(term for term in query)})
    b_search = search.encode("utf-8")
    response = urllib.request.Request(url, b_search, headers)
    page = urllib.request.urlopen(response)
4

2 に答える 2

2

その URL の戻り値が JSON 形式であるため、機能していません。その URL を取得して、次のような検索語を入力すると:

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=ビンゴ

結果は、beautifulsoup が処理するように設定されていない JSON 形式で返されます。(ただし、スクレイピングよりもはるかに優れています)

{"responseData": 
     {"results":
   [{"GsearchResultClass":"GwebSearch","unescapedUrl":"http://www.pogo.com/games/bingo-luau","url":"http://www.pogo.com/games/bingo-

//etc

追加するために編集:

リクエストの使用:

url = ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=bingo')
resp = requests.get(url)
print(resp.content)

生成:

b'{"responseData": {"results":[{"GsearchResultClass":"GwebSearch","unescapedUrl":"http://www.pogo.com/games/b...
//etc    
于 2015-12-04T23:34:11.430 に答える