使用django和casperjs捕获网页

django-screamshot的Python项目详细描述


=======
Django尖叫声图片::https://secure.travis-ci.org/makinorpus/django-screamshot.svg?branch=master
:alt:build status
:target:http://travis ci.org/makinorpus/django screamshot

。图片::https://img.shields.io/pypi/v/django screamshot.svg
:alt:最新的pypi版本
:target:https://pypi.python.org/pypi/django screamshot/

……图片::https://img.shields.io/pypi/dw/django screamshot.svg
:alt:pypi下载数
:目标:https://pypi.python.org/pypi/django screamshot/

……图片::https://img.shields.io/git hub/downloads/makinorpus/django screamshot/total.svg
:alt:git hub下载数
:目标:https://github.com/makinorpus/django screamshot/archive/master.zip

。图片::https://img.shields.io/pypi/format/django screamshot.svg
:alt:format
:目标:https://pypi.python.org/pypi/django screamshot/

图片::https://img.shields.io/pypi/l/django screamshot.svg
:a lt:license
:target:https://raw.githubusercontent.com/makincorpus/django screamshot/master/license


*django screamshot*是一个**非常天真**的网页捕获实现
使用'casperjs<;http://casperjs.org>;``(*aaaaaah!*,`phantomjs<;http://phantomjs.org>;`:)

(*请参阅问题页了解有关仍需完成的工作的更多详细信息。*)


checkout`screamshotter<;https://github.com/makincorpus/django screamshot/tree/screamshotter>;`,
由*django screamshot提供支持的最简单的django项目*


===
首先确保在"path"中有"casperjs"或"phantomjs"命令,并使用相关的安装说明:
*`casperjs<;http://casperjs.org>;`.
*`phantomjs<;http://phantomjs.org>;`.

然后安装egg:

::


pip install django screamshot


===
用法
===


*将"screamshot"添加到"已安装的应用程序"中`








url patterns=模式('',

url(r'^capture/$',include('screamshot.url',namespace='screamshot',app''screamshot'),



然后可以使用以下get参数获取屏幕截图:

url
要捕获的网站url。这可以是完全限定的url,也可以是要在django项目中反转的url的
名称。注意:不要忘记对url进行编码。


selector
css3 selector。它会将屏幕截图限制为选定的元素。

method
http method to be use(*default:*``get``)


width
viewport width(*default:*``1400`)

height
viewport height(*default:*``900`)

data
http data to be post(*default:*``{}``)


waitfor
css3选择器。只有当此选择器满足
时,才会执行屏幕截图。典型用法:如果页面包含繁重的javascript处理,
处理完成后,可以在元素上添加css类,以确保屏幕截图能够正确呈现页面。

render
如果render=html,它将返回一个包含图像的HTML页面,其中
打印纸尿布框将自动打开。

size
调整图像大小(宽度x高度,例如:``500x500```),需要安装``pil``或``should`。

crop
如果``true`,然后裁剪结果图像以匹配指定的大小。

例如:http://server/capture/?url=http://django-fr.org&;selector=body&;width=1024&;height=768&;size=500x500





它将
p执行捕获并返回结果图像的base64版本。

在svg模板中:



{%load screamshot%}


<;image
y="200"
x="300"
id="image map"
xlink:ref="data:{%base64capture"company:map"%}"
width="640"/>;



如果在其他实例上运行捕获服务器,则可以指定要反转的
根url(默认为本地*):



"捕获根url":"http://127.0.0.1:8001",
}



一个典型的例子是为客户创建一个pdf收据并通过电子邮件发送。这两个任务都可能需要一段时间,因此很自然地将它们放入某个队列(如rabbitmq)。但是,如果执行了pdf呈现任务get,则无法访问请求对象。别担心-你还可以用尖叫声作为图书馆。以下是方法。




#例如将其附加到电子邮件等。
print(output.name)


format='png')



请注意,为了加载静态文件,screamshot将尝试用静态文件的本地路径替换所有静态\u url(当然,仅当它们不是通过https托管的时候)


自定义页面呈现
-------------------------


casperjs脚本在"body"上附加"screamshot"css类`元素。
您可以在css样式表中使用此css标记轻松自定义打印呈现:


::

。尖叫声导航{
显示:无;
}
。尖叫声主{
边距:2em;
}


捕获具有身份验证的视图
--------


您可以在django项目中使用基本http身份验证,为截图创建一个专用的
用户,并用凭据(``http://user:password@host/page/``)捕获完整的url。

您可以使用特定的视图装饰器。


}


,并使用提供的装饰程序:

::


arguments
--------
您可以通过设置
``capture_method``设置来指定要使用的渲染器。默认值为"casperjs"。可能的值
是"casperjs"和"phantomjs"。




screamshot配置{
"捕获方法":"phantomjs",
}




默认情况下,我们在"path"环境变量(如"which"中查找casperjs/phantomjs二进制文件,但是你可以绕过这个:



'casperjs戋cmd':'/home/you/downloads/apps/casperjs',
'phantomjs戋cmd':'/home/you/downloads/apps/phantomjs'



请注意,``capture戋method`设置指定了位置将被计算,即,如果将"capture_method"设置为"phantomjs",则将计算"phantomjs_cmd"`


={
'cli_args':['--磁盘缓存=真','--最大磁盘缓存大小=30000']
}

请参阅phantomjs和casperjs主页上的相关文档。



默认实现使用为casperjs编写的capture
脚本。还提供了phantomjs的默认捕获脚本。


}



关于runserver的说明
---------


如果要使用"manage.py runserver"进行测试,您将无法捕获来自同一实例的页面。


运行两次(在两个端口上)并配置"捕获根URL"。



===
authors
==


*mathieu leplatre<;mathieu.leplatre@makina corpus.com>;
*mozillag
*dynamicguy
*eric brehault<;eric.brehault@makina corpus.com>;

| makinacom图片:http://depot.makina corpus.org/public/logo.gif
…_马基诺:http://www.makina-corpusina-corpus.com


=
=
=
=








=












===========














0.8.1(2017-06-14)
=====


*修复路径中的虚拟路径




<0.8.1(2017-05-05)
=====

*修复python 3支持
*添加对django 1.11的支持
*放弃对django<的支持;




<0.7.0(2017-01-08)0.7.0(2017-01-01-08)0.7.0(2017-01-01-08)0.7.0(2017-01-01-08)0.7.0(2017-01-01-01-08)0.7


*支持渲染pdf
*python 3支持
*python 3支持
*django 1.8支持
*django 1.8支持
*添加测试捕获脚本设置




<0.6.0(2014-11-11-27)0 0.6.0(2014-11-11-27)0 0 0*增加了对纯幻影捕获的支持,也就是说,没有casperjs,没有选择器(由mateusz mikolajczyk提供)
*支持捕获本地呈现的模板,无需外部请求(由Mateusz Mikolajczyk提供)


<0.5.0(2014年11月11日)
===



*添加了屏幕截图模型和管理员支持(由Luc Milland提供)
*允许在执行屏幕截图之前等待给定的时间(毫秒)(由Florent Lebreton提供)
*替换Mimetype by content(按内容)在HttpResponse for Django1.7 Compliance(按Florent Lebreton)中键入



>0.4.0(2014-03-19)
=====


*如果未提供URL,使用请求的主机(由Mozillag提供)
*允许提供自定义的phantomjs命令(由Mo Mughrabi提供)
*改进的日志记录
*添加了一些极简的单元测试



>0.3.1(2014-01-31)
==


*修复需求拼写


<0.3.0(2013-09-05)对于参数错误(400)返回适当的http响应,更好地处理捕获错误,而不是远程js。(ref 1)
*save temporary file step是为"casperjs_capture"指定的输出,它是一个文件路径
*添加一个*screamshotter*孤立分支,作为一个演示Django项目,能够控制图像格式(除了"png"或"html"之外)




>0.2.0(2013-08-18)
====


*casperjs-cmd设置为绕过路径查找图像大小
*query``render``参数控制输出格式
*remove``remote.message``登录
*query``waitfor``参数控制捕获时间
*在*body*上插入*screamshot*类以允许cap真正的样式化
*如果没有提供选择器,则使用捕获而不是捕获选择器
*查询参数来控制视区大小
*添加额外命令行参数的能力
*更新的casperjs cli状态码
*在登录装饰器中检测转发的IP地址



0.1.1(2012-04-17)
====


*包含包数据





>0.1.0(2012-04-17)
====



*初始工作版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在构造函数外部添加鼠标侦听器   java如何使用比较器对列表进行排序以正确排序空值?   javajavax。由于javax,邮件“535.7.3身份验证失败”。邮件升级(v1.3.1至v1.5.2)   java将arraylist流到固定的二维数组中并打印?   RecyclerView适配器上的java上下文   java如何为此Twitter API为KafkaProducer建立连接   java Spring安全性重写WebSecurity配置适配器的配置(AuthenticationManagerBuilder)是否会影响全局应用程序?   线程“awteventque0”NullPointerException中的java异常   if条件中的null值和null指针异常java   java树集<Object>允许相同类型的多个对象   java定义类;我认不出   字符串java replaceAll()   JAVAutil。scanner(Java)读取文件时如何跳过空格?   java在swing中关闭flash屏幕   java在Wildfly 16中的应用程序中加载pk12文件   有没有工具可以自动生成屏幕抓取的Java代码   创建意图时,java方法getParcelableExtra()返回null   将数据从java传递到jsp   java Android Studio |永久保存布局