【问题标题】:lxml etree and xpath returning an encoded image rather than URL for srclxml etree 和 xpath 返回编码图像而不是 src 的 URL
【发布时间】:2014-11-15 20:33:23
【问题描述】:

当我处理一些 html 时,我想要图像的 src url,但我得到的是编码图像。如果我想要网址,我做错了什么?

给定一个网址,例如:“http://www.amazon.com/Cheese-Plate-multi-purpose-mounting-plate/dp/B00CI06DWE/

还有一个桌面用户代理:

from lxml import etree
import requests

page = requests.get(url, headers=agent)
page_txt = page.text

html_parser = etree.HTMLParser()
tree = etree.parse(StringIO(page_txt), html_parser)

path = '//img[@id="landingImage"]'

img = tree.xpath(path)

img_src = img[0].get('src')

使用该代码,我回来了:

'\ndata:image/jpeg;base64,/9j/4AAQSkZJR'(截断)

当我想要时:

http://ecx.images-amazon.com/images/I/41SNmVfXvhL.SY355.jpg

【问题讨论】:

    标签: python python-2.7 xpath html-parsing lxml


    【解决方案1】:

    src 属性中有一个base64 encoded image。您可以从data-a-dynamic-image 属性中获取实际的 URL,它包含 JSON 字符串,其中包含 url:

    import json 
    
    path = '//img[@id="landingImage"]/@data-a-dynamic-image'
    print next(json.loads(tree.xpath(path)[0]).iterkeys())
    

    打印:

    http://ecx.images-amazon.com/images/I/41SNmVfXvhL._SX466_.jpg
    

    【讨论】:

    • 感谢亚历克西!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2020-08-30
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多