首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:保存页面的动态映像

Python:保存页面的动态映像
EN

Stack Overflow用户
提问于 2014-08-21 18:47:10
回答 2查看 1.4K关注 0票数 2

我需要以编程方式加载HTML页面的内容,HTML页面的正文中有一个动态图像。然后,我想下载并保存这个图像,因为它显示了在页面加载中的时间。

HTML中的图像示例:

代码语言:javascript
运行
复制
<img src="image.php">

问题是,我不能只在http://example.com/image.php上获取PHP脚本的内容,因为它只会生成并返回另一个图像,而不是原始页面中生成的相同图像。

那么,如何保存在该页面中生成的图像呢?我知道我不能使用网页浏览器,因为它打开了一个实际的浏览器窗口。我正在考虑使用zope.testbrowser或者机械化,但是没有找到任何关于如何做的信息。

你们能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-24 23:15:08

解决了使用机械化,烹饪和urllib。

首先,设置导入和无头浏览器处理程序:

代码语言:javascript
运行
复制
# Mechanize headless
import mechanize
import cookielib
import urllib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Want debugging messages?
#br.set_debug_http(True)
#br.set_debug_redirects(True)
#br.set_debug_responses(True)

加上“人”头,这样你就不会被误认为是机器人.

代码语言:javascript
运行
复制
# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

现在,您可以使用open方法正常地“导航”。动态图像也可以用open加载。只需按照页面/文件层次顺序,机械化/烹饪将为您处理标题.

代码语言:javascript
运行
复制
r = br.open('http://www.example.com/html-page-with-dynamic-image-embedded.html')

# Check if HTML content returned ok
if br.response().info()['Content-Type'] == 'text/html; charset=iso-8859-1':
    # Now that the main page is loaded you can open the dynamic image
    r = br.open('http://www.example.com/images/image.php')

    # From here you just treat the image as you wish
    png = r.read()
    f = open('image-new-name.png', 'wb')
    f.write(png)
    f.close()  

如果需要发送URL获取数据,则使用Urllib,如下所示

代码语言:javascript
运行
复制
data = {'varName1': var1, 'varName2': var2, ...}
data = urllib.urlencode(data)
r = br.open('http://www.example.com/html-page-with-dynamic-image-embedded.html', data)
票数 2
EN

Stack Overflow用户

发布于 2014-08-21 22:45:46

我仍然是个初学者--但我也用过类似的BeautifulSoup,从一个网站下载图片。

使用这个库应该很容易获得图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25433789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档