python - 如何从 requests.get() 获取更多标签

标签 python beautifulsoup python-requests

我正在尝试从这里获取图像。

https://www.google.co.kr/search?q=dog&rlz=1C1MSIM_koKR747KR747&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjSn7Hm053YAhWLmpQKHXRpAh4Q_AUICigB&biw=1440&bih=794

您可以使用 Chrome 开发者工具检查是否有很多 'img' 标签。但是,当我运行下面的代码时,我很失望地看到数字 21。我该如何增加它?

r=requests.get(url)
soup=bsp(r.text,'lxml')
len(soup.find_all('img'))

最佳答案

问题在于 Google 提供的静态页面实际上不包含任何图像搜索结果。如果获取结果中包含的图像,您会发现 Google Logo 和一些结构图像 - 可能是它们用来建议搜索优化的标签。

实际图像是由 Javascript 代码延迟加载的,使用请求获取这些图像非常困难 - 这意味着您可以使用浏览器的工具检查页面的客户端代码对服务器执行的请求,以及相反,模仿那些。这可能可行也可能不可行,因为谷歌很容易向延迟请求插入一些 token 和预计算,而这些请求很难从页面上的 Javascript 进行逆向工程。此外,它很可能违反了 Google 图像搜索的使用条款。

您可以尝试切换到 Selenium进行网络搜索,而不是请求。由于它使用真实的浏览器,它将运行 Javascript 并发出实际的惰性请求。它会起作用 - 但您仍然会违反该网站的使用条款,并且可能不久之后您就会开始在结果中获得验证码。

因此,执行此类操作的正确方法是检查服务提供商(在本例中为 Google 图像搜索)是否具有可用于执行搜索的公共(public) API。在搜索时,您会发现 Google Image Search API 已被弃用,现在可以使用 Google Search API 来查找图像。目前,他们每天允许 100 次免费搜索,超过 100 次之后将收取服务费用。

这是他们了解 API 和可能注册的链接

https://developers.google.com/custom-search/json-api/v1/overview?csw=1

在您理解并获得 API key 后,有一个 API 的 Python 包装器,它可以让您省去很多麻烦,并可能为您提供图像的 URL:

https://pypi.python.org/pypi/Google-Search-API

关于python - 如何从 requests.get() 获取更多标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47941954/

相关文章:

python - 设置 cv2 窗口的全屏属性时出错

python - 使用 Python 仅下载 IMDB 上网页的所需部分

python - 我可以使用 BeautifulSoup 删除脚本标签吗?

python - GitHub GraphQL API 解析 JSON 时出现问题

Python 请求无法正常工作

python - 使用 jinja2 模板中的空白控制修剪 block

python - 获取 BLAST 结果的前 10 个序列 Bio Python

python - 错误处理 Telegram bot

python-3.x - 美丽的刮汤

python - request.get() 卡住了