当提取图片的URL时,获取到了"data:image/jpeg;base64"的数据

4
我将尝试使用python urllib2从网站上抓取图片URL。以下是我用于获取HTML字符串的代码:
req = urllib2.Request(url, headers = urllib2Header)
htmlStr = urllib2.urlopen(req, timeout=15).read()

当我从浏览器查看时,这张图片的html代码看起来像这样:
<img id="main-image" src="http://abcd.com/images/41Q2VRKA2QL._SY300_.jpg" alt="" rel="" style="display: inline; cursor: pointer;">

然而,当我从捕获的htmlStr中读取时,图片被转换为base64图像,它看起来像这样:
<img id="main-image" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQU....">

我想知道为什么会发生这种情况。有没有办法获取原始图像的URL而不是base64图像字符串?
谢谢。

你想要爬取哪个网址? - PepperoniPizza
我试图爬取亚马逊的图书页面。http://www.amazon.com/Blood-Sugar-Solution-10-Day-Detox/dp/0316230022 - user1719599
1个回答

0

你可以使用BeautifulSoup

示例:

import urllib2
from bs4 import BeautifulSoup

url = "www.theurlyouwanttoscrape.com"
html = urllib2.urlopen(url)

soup = BeautifulSoup(html)

img_src = soup.find('img', {'id':'main_image'})['src']

这个可行!我在想也许我不应该使用htmlStr = urllib2.urlopen(req, timeout=15).read()。也许是.read()方法将图像URL转换为base64图像。 - user1719599
我正在使用lxml etree作为解析器。有没有一种方法可以仍然使用lxml etree并正确获取图像URL? - user1719599
@user1719599 - 你好。快进到2020年,这似乎仍然是一个问题,至少对我而言是如此。您是否使用lxml使其正常工作?我也在使用BS4。以上回答过于简略,并且对我无效。 - Fandango68
@Fandango68 你好。我对此不是100%确定,因为已经有一段时间没有使用BeautifulSoup了,但我会很惊讶如果解析器对soup对象上面的方法有任何影响。也许你应该开一个新问题来描述你的确切错误或问题? - Totem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接