小编Nat*_*hak的帖子

使用 src 和 BeautifulSoup 从 Google 图片中提取图片

我正在关注这个过去的问题(根据使用 BeautifulSoup 的属性提取图像 src)尝试从谷歌图像页面中提取所有图像。我收到了“urllib2.HTTPError: HTTP Error 403: Forbidden”错误,但能够使用以下方法解决它:

req = urllib2.Request(url, headers={'User-Agent' : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/11.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30"})
Run Code Online (Sandbox Code Playgroud)

但是,然后我收到了一个新错误,似乎在告诉我 src 属性不存在:

Traceback (most recent call last):
  File "Desktop/webscrapev2.py", line 13, in <module>
print(tag['src'])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/bs4/element.py", line 958, in __getitem__
return self.attrs[key]
KeyError: 'src'
Run Code Online (Sandbox Code Playgroud)

我能够通过专门检查 'src' 属性来克服该错误,但是我的大多数图像在提取时都没有 src 属性。似乎谷歌正在做一些事情来掩盖我提取甚至几张图像的能力(我知道请求是有限的,但我认为它至少是 10 个)。

例如打印出变量标签(见下面的代码)给我这个:

 <img alt="Image result for baseball pitcher" class="rg_i" data-src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRZK59XKmZhYbaC8neSzY2KtS-aePhXYYPT2JjIGnW1N25codtr2A" data-sz="f" jsaction="load:str.tbn" name="jxlMHbZd-duNgM:" onload="google.aft&amp;&amp;google.aft(this)"/>
Run Code Online (Sandbox Code Playgroud)

但是打印出变量 v 给出了“无”。我不知道为什么会发生这种情况,也不知道如何从返回的内容中获取实际图像。有谁知道如何获得实际图像?我特别担心因为 data-src URL 以加密开头...我应该查询 data-src 来获取图像而不是 …

html image beautifulsoup src web-scraping

3
推荐指数
1
解决办法
6231
查看次数

标签 统计

beautifulsoup ×1

html ×1

image ×1

src ×1

web-scraping ×1