You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python谷歌搜索结果数量获取:解决含空格字符串搜索匹配问题

解决谷歌搜索带空格短语的结果数量匹配问题

我明白你的痛点——直接传带空格的字符串去请求谷歌搜索,得到的结果数量总是和手动搜的不一样,核心问题其实有两个:一是谷歌会把无引号的空格字符串拆成多个独立关键词,二是纯requests请求容易被识别为爬虫,返回的页面和手动访问的完全不同。

下面是调整后的代码,能让结果和手动搜索几乎一致:

import requests
from bs4 import BeautifulSoup

# 要搜索的带空格短语
search_phrase = 'just a teststring for the search'
# 给短语套双引号,模拟手动搜索时的精确匹配操作
query = f'"{search_phrase}"'

# 必须加请求头模拟浏览器,否则谷歌会返回反爬页面
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

# 发送带请求头的搜索请求
r = requests.get('http://www.google.com/search', params={'q': query}, headers=headers)
r.raise_for_status()  # 捕获请求失败的情况

soup = BeautifulSoup(r.text, "html5lib")

# 定位谷歌结果数量的标准元素
result_stats = soup.find('div', {'id': 'result-stats'})
if result_stats:
    # 提取并打印结果数量文本,比如"约 123,456 条结果"
    print(result_stats.get_text(strip=True))
else:
    print("无法获取结果数量,可能是页面结构更新或触发反爬了")

关键调整说明:

  • 精确匹配短语:给搜索词加上双引号query = f'"{search_phrase}"',这和你手动在谷歌搜索框输入带引号的短语效果完全一致,确保搜索的是完整的带空格字符串,而非拆分后的关键词。
  • 模拟浏览器请求:添加User-Agent请求头是关键,谷歌会根据这个识别请求来源,没有的话大概率返回反爬页面,根本找不到结果数量的元素。
  • 正确的元素定位:谷歌的结果数量通常固定在id="result-stats"的div里,你之前写的res...应该是没写完,这个选择器更准确。

另外要注意:谷歌的页面结构可能不定期更新,如果以后找不到元素了,打开浏览器开发者工具重新定位一下结果数量的元素位置就行。

内容的提问来源于stack exchange,提问作者Gerard Júlio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:54:36