使用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)
====
*初始工作版本
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(默认为本地*):
:
}
一个典型的例子是为客户创建一个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二进制文件,但是你可以绕过这个:
:
'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)
====
*初始工作版本