它不是静态网址,而是像xxx.xxx.com/xxx/run
这样的地址图像是根据每日状态动态构建的,因此我无法使用其URL
获取它是否有可能刺激浏览器并使整个页面包含图像?如果那么怎么样?
感谢〜
答案 0 :(得分:2)
有两种方法可以做到这一点。
使用Requests之类的内容来抓取图片所在页面的HTML,然后使用pyquery之类的内容来解析HTML并找到图片的网址。这应该适用于大多数情况,除非URL实际上不在页面的HTML中(即因为它是通过Javascript放在那里)。
使用类似Splinter的内容,您可以通过编程方式控制实际的浏览器,以获取URL。这是一个重量级的解决方案,但它像普通浏览器一样运行javascript(因为它是)。
第一个选项可能如下所示: 导入请求 来自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和密钥;它们并不总是username
和password
。
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