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

Python requests模块无法获取谷歌以图搜图完整页面内容

问题核心原因
  • 谷歌图片搜索的结果区域是JavaScript动态渲染生成的:requests模块仅能获取服务器返回的初始静态HTML文本,不会执行页面内嵌的JS脚本,无法获取JS运行后才插入页面的搜图结果内容。requests返回的内容和浏览器右键「查看网页源代码」展示的内容完全一致,仅包含导航、页脚这类不需要JS加载的静态公共模块。
  • 默认请求未携带真实浏览器身份标识:requests默认的请求头User-Agent会标识自身为Python爬虫,谷歌会对这类请求返回精简页面,甚至触发反爬校验,不会返回完整结果。
  • 代码中Windows本地路径未做转义处理:直接书写"C:\Users\mjjha\..."格式的路径,会因为反斜杠为转义字符触发路径解析错误。
修复方案
  1. 首先给所有请求加上真实浏览器的请求头,模拟正常用户访问,解决反爬返回精简页的问题。如果补全请求头后仍无法获取完整结果,必须更换支持JS渲染的抓取工具——纯requests不具备JS执行能力,本质上不可能抓取动态生成的页面内容。
  2. 两类常用实现路径:
    • 轻量方案:使用requests-html库,内置Chromium内核,可自动执行页面JS后再提取DOM内容,代码改动量小。
    • 稳定方案:使用Playwright/Selenium这类浏览器自动化工具,完全模拟真实浏览器加载行为,等搜图结果全部渲染完成后再提取标签内容,反爬触发概率最低。
修正后的参考代码(requests-html版本)

首先安装依赖:pip install requests-html beautifulsoup4

from requests_html import HTMLSession
from bs4 import BeautifulSoup
import webbrowser

# 路径前加r做原生字符串转义,避免Windows路径反斜杠转义问题
filePath = r"C:\Users\mjjha\Documents\Checkrow\monaLisa.jpg"
searchUrl = 'http://www.google.com/searchbyimage/upload'
# 模拟真实浏览器请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8"
}

session = HTMLSession()
multipart = {'encoded_image': (filePath, open(filePath, 'rb')), 'image_content': ''}
response = session.post(searchUrl, files=multipart, allow_redirects=False, headers=headers)
fetchUrl = response.headers['Location']

# 访问结果页,等待JS渲染完成,等待时间可根据网络情况调整
r = session.get(fetchUrl, headers=headers)
r.html.render(timeout=20)

webbrowser.open(fetchUrl)
soup = BeautifulSoup(r.html.html, 'html.parser')

# 提取需要的标签
all_a = soup.find_all('a')
all_img = soup.find_all('img')
all_h3 = soup.find_all('h3')

# 示例输出a标签链接
for i in all_a:
    if i.get('href'):
        print(i['href'])

首次运行requests-html时会自动下载Chromium内核,等待下载完成即可正常运行。如果需要更高的抓取稳定性,可直接替换为Playwright实现,核心逻辑一致,页面加载等待的可控性更强。

内容的提问来源于stack exchange,提问作者Kshitij_Jha_7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:21:39