它不是静态 url,而是像 xxx.xxx.com/xxx/run 这样的地址
该图像是根据日常状态动态构建的,因此我无法使用其 URL 抓取它
是否可以刺激浏览器并让整个页面包含图像?如果那怎么办?
谢谢~
它不是静态 url,而是像 xxx.xxx.com/xxx/run 这样的地址
该图像是根据日常状态动态构建的,因此我无法使用其 URL 抓取它
是否可以刺激浏览器并让整个页面包含图像?如果那怎么办?
谢谢~
有两种方法可以做到这一点。
使用Requests之类的东西来获取图像所在页面的 HTML,然后使用pyquery之类的东西来解析 HTML 并找到图像的 URL。这应该在大多数情况下都有效,除非 URL 实际上不在页面的 HTML 中(即因为它是由 Javascript 放置的)。
使用像Splinter这样的东西,它可以让你以编程方式控制一个实际的浏览器,来获取 URL。这更像是一个重量级的解决方案,但它像普通浏览器一样运行 javascript(因为它是)。
第一个选项可能如下所示: import requests from pyquery import 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']
然后,像往常一样下载该 URL。
编辑:这是请求的另一个示例,这次使用会话存储由登录表单设置的 cookie。您必须从登录表单上的<form>
和<input>
元素中获取数据字典的 URL 和键;他们不会总是username
and 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