0

它不是静态 url,而是像 xxx.xxx.com/xxx/run 这样的地址

该图像是根据日常状态动态构建的,因此我无法使用其 URL 抓取它

是否可以刺激浏览器并让整个页面包含图像?如果那怎么办?

谢谢~

4

1 回答 1

2

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

  1. 使用Requests之类的东西来获取图像所在页面的 HTML,然后使用pyquery之类的东西来解析 HTML 并找到图像的 URL。这应该在大多数情况下都有效,除非 URL 实际上不在页面的 HTML 中(即因为它是由 Javascript 放置的)。

  2. 使用像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 和键;他们不会总是usernameand 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
于 2013-07-30T00:56:58.190 回答