web-dev-qa-db-ja.com

pythonリクエストライブラリを使用したGoogle検索

(私は探してみましたが、他のすべての答えはurllib2を使用しているようです)

リクエストを使い始めたばかりですが、ページから何か追加のものを送信またはリクエストする方法がまだよくわかりません。たとえば、私は

import requests

r = requests.get('http://google.com')

しかし、たとえば、表示された検索バーを使用してグーグル検索を行う方法がわかりません。クイックスタートガイドを読みましたが、HTML POSTなどにあまり詳しくないので、あまり役に立ちませんでした。

私が求めていることを行うためのクリーンでエレガントな方法はありますか?

8
James

リクエストの概要

Google検索リクエストは標準のHTTP GETコマンドです。これには、クエリに関連するパラメータのコレクションが含まれています。これらのパラメータは、アンパサンド(&)文字で区切られた名前=値のペアとしてリクエストURLに含まれます。パラメータには、検索クエリなどのデータと、HTTP要求を行っているCSEを識別する一意のCSE ID(cx)が含まれます。ウェブ検索や画像検索サービスは、HTTPリクエストに応じて、XML結果を返します。

まず、 カスタム検索エンジンのコントロールパネル でCSE ID(cxパラメーター)を取得する必要があります

その後、 カスタム検索のための公式のGoogleデベロッパーサイトを参照してください。

このような多くの例があります:

http://www.google.com/search?
  start=0
  &num=10
  &q=red+sox
  &cr=countryCA
  &lr=lang_fr
  &client=google-csbe
  &output=xml_no_dtd
  &cx=00255077836266642015:u-scht7a-8i

そして、あなたが使用できるパラメータのリストが説明されています。

8
Trimax
_import requests 
from bs4 import BeautifulSoup

headers_Get = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate',
        'DNT': '1',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1'
    }


def google(q):
    s = requests.Session()
    q = '+'.join(q.split())
    url = 'https://www.google.com/search?q=' + q + '&ie=utf-8&oe=utf-8'
    r = s.get(url, headers=headers_Get)

    soup = BeautifulSoup(r.text, "html.parser")
    output = []
    for searchWrapper in soup.find_all('h3', {'class':'r'}): #this line may change in future based on google's web page structure
        url = searchWrapper.find('a')["href"] 
        text = searchWrapper.find('a').text.strip()
        result = {'text': text, 'url': url}
        output.append(result)

    return output
_

Googleの結果の配列を{'text':text、 'url':url}形式で返します。上位の結果のURLはgoogle('search query')[0]['url']になります

9
Ben
import requests                                                                                                                                                                                                    

def googlesearch(searchfor):                                                                                                                                                                                       
    link = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % searchfor                                                                                                                              
    ua = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36'}                                                                
    payload = {'q': searchfor}                                                                                                                                                                                     
    response = requests.get(link, headers=ua, params=payload)                                                                                                                                                      
    print response.text                                                                                                                                                                                            

googlesearch('test')

プリント:

{"responseData":{"results":[{"GsearchResultClass": "GwebSearch"、 "unescapedUrl": " http://www.speedtest.net/ "、 "url": "- http://www.speedtest.net/ "、" visibleUrl ":" www.speedtest.net "、" cacheUrl ":" http://www.google.com/search ?q \u003dcache:M47_v0xF3m8J:www.speedtest.net "、" title ":" Speedtest.net byOokla-グローバルブロードバンド速度\ u003cb\u003eTest\u003c/b\u003e "、" titleNoFormatting ":" Speedtest .net byOokla-グローバルブロードバンド速度テスト "、" content ":"\u003cb\u003eTest\u003c/b\u003eこの\ nインタラクティブブロードバンド速度\ u003cb\u003etest\u003c/bで世界中の場所へのインターネット接続帯域幅\ u003e fromOokla。 "}、

等.

4
bk201

入力:

import requests

def googleSearch(query):
    with requests.session() as c:
        url = 'https://www.google.co.in'
        query = {'q': query}
        urllink = requests.get(url, params=query)
        print urllink.url

googleSearch('Linkin Park')

出力:

https://www.google.co.in/?q=Linkin+Park
2
abhishake