如何在python中获取具有动态src ID的Web图像

时间:2013-07-30 00:49:32

标签: python

它不是静态网址,而是像xxx.xxx.com/xxx/run

这样的地址

图像是根据每日状态动态构建的,因此我无法使用其URL

获取它

是否有可能刺激浏览器并使整个页面包含图像?如果那么怎么样?

感谢〜

1 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点。

  1. 使用Requests之类的内容来抓取图片所在页面的HTML,然后使用pyquery之类的内容来解析HTML并找到图片的网址。这应该适用于大多数情况,除非URL实际上不在页面的HTML中(即因为它是通过Javascript放在那里)。

  2. 使用类似Splinter的内容,您可以通过编程方式控制实际的浏览器,以获取URL。这是一个重量级的解决方案,但它像普通浏览器一样运行javascript(因为它是)。

  3. 第一个选项可能如下所示:     导入请求     来自pyquery导入PyQuery

    html = requests.get('http://example.com/').text
    html_q = PyQuery(html)
    image_url = html_q('img.my_image_class').attr('src')
    

    而第二个看起来像这样:

    from splinter import Browser
    
    with Browser() as b:
        b.visit('http://example.com/')
        image_url = b.find_by_css('img.my_image_class')['src']
    

    然后,只需像往常一样下载该网址。


    编辑:这是另一个带有请求的示例,这次使用会话来存储由登录表单设置的cookie。您必须从登录表单上的<form><input>元素获取数据字典的URL和密钥;它们并不总是usernamepassword

    import requests
    s = requests.session()
    s.post('https://example.com/dologin', data={'username': 'adam', 'password': 'hunter2'})
    html = s.get('https://example.com/other_page').text
    # and continue as in the first example