2024-09-27 23:18:43 发布
网友
我正在努力抓取谷歌图片。beautiful soup提取“src”,并输出链接 数据:图像/gif;base64,R0LGodlhaqabaaap/////YH5baekaaeaaaaaaaaaaaaaicaaow== 这不是真实的图像。 脚本标记看起来编码很重,不包含实际的URI。 有人能给我一个解决办法吗
实际上,这是一个缩小的数据URI,解码后生成1x1图像。我的问题是谷歌如何缩小完整的数据URI,我们如何访问完整的URI,以便获得实际的图像
这是Base64编码的图像。您可以将其保存到图像文件,如:
src = "BASE64 DATA" img = open("MyImage.gif","wb+") img.write(src.decode('base64')) img.close()
这是数据URL,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
您可以解码base64字符串,然后保存到图像文件中
谷歌图像是从(谢天谢地)内联JavaScript插入DOM的。为任何查询打开搜索结果的页面源,复制imagesrc属性,然后在页面源中找到它
src
要仅使用bs4提取数据,可以模拟浏览器并使用正则表达式从内联JavaScript提取数据
bs4
或者,您可以使用SerpApi提取完整图像的URI。这是一款免费试用的付费SaaS
使用curl的示例
curl
curl -s 'https://serpapi.com/search?q=coffee&tbm=isch'
使用Repl.it上的google-search-resultsPython包的示例
google-search-results
from serpapi import GoogleSearch import os params = { "engine": "google", "q": "coffee", "tbm": "isch", "api_key": os.getenv("API_KEY") } client = GoogleSearch(params) data = client.get_dict() print("Images results") for result in data['images_results']: print(f""" Position: {result['position']} Original image: {result['original']} """)
示例输出
Images results Position: 1 Original image: https://upload.wikimedia.org/wikipedia/commons/4/45/A_small_cup_of_coffee.JPG Position: 2 Original image: https://media3.s-nbcnews.com/j/newscms/2019_33/2203981/171026-better-coffee-boost-se-329p_67dfb6820f7d3898b5486975903c2e51.fit-1240w.jpg
检查文档中的Google Images API on SerpApi website
免责声明:我在SerpApi工作
这是Base64编码的图像。您可以将其保存到图像文件,如:
这是数据URL,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
您可以解码base64字符串,然后保存到图像文件中
谷歌图像是从(谢天谢地)内联JavaScript插入DOM的。为任何查询打开搜索结果的页面源,复制image
src
属性,然后在页面源中找到它要仅使用
bs4
提取数据,可以模拟浏览器并使用正则表达式从内联JavaScript提取数据或者,您可以使用SerpApi提取完整图像的URI。这是一款免费试用的付费SaaS
使用
curl
的示例使用Repl.it上的
google-search-results
Python包的示例示例输出
检查文档中的Google Images API on SerpApi website
免责声明:我在SerpApi工作
相关问题 更多 >
编程相关推荐