【问题标题】:When scraping image url src, get data:image/jpeg;base64抓取图片url src时,获取data:image/jpeg;base64
【发布时间】:2014-04-15 20:59:48
【问题描述】:

我正在尝试使用 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图片字符串?

谢谢。

【问题讨论】:

标签: python html image web-scraping


【解决方案1】:

你可以使用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 图像。
  • 我使用 lxml etree 作为解析器。有没有办法我仍然可以使用 lxml etree 并且仍然正确获取图像 url?
  • @user1719599 - 你好。快进到 2020 年,这显然仍然是一个问题,至少对我而言。你用lxml让它工作了吗?我也在使用BS4。上面的答案太单薄了,对我不起作用。
  • @Fandango68 你好。我不是 100% 的,有一段时间没有使用 BeautifulSoup,但是如果使用的解析器对汤对象上的方法有任何影响(如上所示),我会感到惊讶。也许您应该针对您的确切错误/问题提出一个新问题?
猜你喜欢
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 2012-05-15
  • 2012-10-16
  • 2021-01-20
  • 2012-09-15
  • 2012-12-20
  • 2013-07-12
相关资源
最近更新 更多