使用python请求库进行谷歌搜索

Jam*_*mes 8 python google-search google-search-api python-requests

(我试过看,但所有其他答案似乎都在使用urllib2)

我刚刚开始尝试使用请求,但我仍然不太清楚如何从页面发送或请求其他内容.例如,我会的

import requests

r = requests.get('http://google.com')
Run Code Online (Sandbox Code Playgroud)

但我不知道现在怎么做,例如,使用提供的搜索栏进行谷歌搜索.我已经阅读了快速入门指南,但我对HTML POST等不是很熟悉,所以它并没有太大帮助.

有什么干净而优雅的方式来做我要问的事吗?

Tri*_*max 9

请求概述

Google搜索请求是标准的HTTP GET命令.它包含一系列与您的查询相关的参数.这些参数作为名称=值对包含在请求URL中,以&符号分隔.参数包括搜索查询等数据和标识发出HTTP请求的CSE的唯一CSE ID(cx).WebSearch或Image Search服务返回XML结果以响应您的HTTP请求.

首先,您必须在自定义搜索引擎的控制面板上获取您的CSE ID(cx参数)

然后,请参阅Google Developers官方网站以获取自定义搜索.

有很多这样的例子:

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
Run Code Online (Sandbox Code Playgroud)

并且解释了您可以使用的参数列表.


小智 9

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
Run Code Online (Sandbox Code Playgroud)

将以{'text':text,'url':url}格式返回一系列Google搜索结果.最好的结果网址是google('search query')[0]['url']

  • 仅供参考,自动执行脚本式搜索违反Google的服务条款-您应改用Google的自定义搜索API(https://developers.google.com/custom-search/docs/tutorial/creatingcse)。更清洁,无需使用BeautifulSoup。 (2认同)

abh*_*ake 5

输入:

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')
Run Code Online (Sandbox Code Playgroud)

输出:

https://www.google.co.in/?q=Linkin+Park
Run Code Online (Sandbox Code Playgroud)