首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何一次浏览100多个google页面

如何一次浏览100多个google页面
EN

Stack Overflow用户
提问于 2016-01-05 14:28:58
回答 2查看 5.9K关注 0票数 1

我正在使用python中的请求库从google结果获取GET数据。https://www.google.com.pk/#q=pizza&num=10将返回谷歌的前10名结果,正如我提到的num=10。最终,https://www.google.com.pk/#q=pizza&num=100将返回100个谷歌结果。

如果我写的任何数字超过100让https://www.google.com.pk/#q=pizza&num=200,谷歌仍然返回前100个结果

我怎么能一次超过100次呢?

代码:

代码语言:javascript
运行
复制
import requests
url = 'http://www.google.com/search'
my_headers = { 'User-agent' : 'Mozilla/11.0' }
payload = { 'q' : pizza, 'start' : '0', 'num' : 200 }
r = requests.get( url, params = payload, headers = my_headers )

在"r“中,我只得到google前100个结果的URL,而不是200个

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-05 17:10:19

您可以使用google提供的更具编程性的api来获取结果,而不是试图筛选人工搜索界面,没有错误检查或断言--这符合所有的google T&Cs,建议您查看使用此url的详细信息:

代码语言:javascript
运行
复制
import requests

def search(query, pages=4, rsz=8):
    url = 'https://ajax.googleapis.com/ajax/services/search/web'
    params = {
        'v': 1.0,     # Version
        'q': query,   # Query string
        'rsz': rsz,   # Result set size - max 8
    }

    for s in range(0, pages*rsz+1, rsz):
        params['start'] = s
        r = requests.get(url, params=params)
        for result in r.json()['responseData']['results']:
            yield result

例如,“google”获得了200个结果:

代码语言:javascript
运行
复制
>>> list(search('google', pages=24, rsz=8))
[{'GsearchResultClass': 'GwebSearch',
  'cacheUrl': 'http://www.google.com/search?q=cache:y14FcUQOGl4J:www.google.com',
  'content': 'Search the world&#39;s information, including webpages, images, videos and more. \n<b>Google</b> has many special features to help you find exactly what you&#39;re looking\xa0...',
  'title': '<b>Google</b>',
  'titleNoFormatting': 'Google',
  'unescapedUrl': 'https://www.google.com/',
  'url': 'https://www.google.com/',
  'visibleUrl': 'www.google.com'},
  ...
]

要使用Google的自定义搜索API,您需要注册为开发人员。您每天得到100个免费查询(我不确定这是API调用,还是允许将同一个查询的分页计算为1个查询):

  • 获取CSE引用(查看cx=<cse reference>的公共URL )

您可以使用requests进行查询:

代码语言:javascript
运行
复制
import requests
url = 'https://www.googleapis.com/customsearch/v1'
params = {
    'key': '<key>',
    'cx': '<cse reference>',
    'q': '<search>',
    'num': 10,
    'start': 1
}

resp = requests.get(url, params=params)
results = resp.json()['items']

使用start,您可以进行类似于上面的分页。

还有许多其他可用的参数,您可以查看CSE:https://developers.google.com/custom-search/json-api/v1/reference/cse/list#request的REST文档

Google还有一个客户端api库:pip install google-api-python-client,您也可以使用:

代码语言:javascript
运行
复制
from googleapiclient import discovery
service = discovery.build('customsearch', 'v1', developerKey='<key>')
params = {
    'q': '<query>',
    'cx': '<cse reference>',
    'num': 10,
    'start': 1
}
query = service.cse().list(**params)
results = query.execute()['items']
票数 6
EN

Stack Overflow用户

发布于 2016-01-27 12:43:07

为此,您可以使用浏览器自动化。我用它刮了一张图片的清单。使用浏览器自动化,您可以单击下一个或以前的按钮,并得到报废的结果。我无法粘贴代码。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34614057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档