用于将完整网页和网站克隆到本地存储的python包。
pywebcop的Python项目详细描述
pywebcopy©6
创建人:raja tomar
许可证:MIT
电子邮件:rajatomar788@gmail.com
轻松克隆python网站和网页。 使用python抓取或保存完整的网页和网站。
用python编写的web抓取和归档工具
存档任何在线网站及其资产、css、js和
用于office读取、存储或其他原因的图像。
使用pywebcopy
为什么很棒?因为它-
- 尊重robots.txt
- 使用css、js和图像一次调用即可保存网页
- 克隆一个完整的网站,其中的资产和链接在一次调用中重新映射
- 使用直接的api实现简单易用
- 高级使用的子类化
- 自定义HTML标记处理程序支持
- 许多配置可满足许多定制需求
- 在一个对象中提供多个刮削包,用于在一个类下刮削
- lxml
- 请求
- 美化组4
- pyquery
- 请求HTML
如有任何疑问,请发电子邮件至 你准备好了。阅读下面的教程开始学习。 您应该始终检查是否成功安装了最新的pywebcopy。 您的版本可能不同,现在您可以继续本教程。 要保存任何单个页面,只需在python控制台中键入 要保存完整的网站(这可能会使目标服务器过载,因此,请小心) 运行测试很简单,不需要任何外部库。
只需从pywebcopy包的根目录运行此命令。 大多数情况下,访问某个页面需要身份验证。
使用 下面是简单http auth的一个基本示例- 创建实例 您可以直接从 从Internet获取HTML源代码 你可以告诉它从
然后,它使用 您可以传入几个 提供自己打开的文件
您还可以提供开放源代码句柄
直接 创建后将公开 要更改此位置,必须操纵
要更改此位置,必须操纵
此方法保存所有的css 如果你想用css,js和图片来完成网页 在一个对象中包装了多个刮削包
你可以用它来解锁所有这些库中最好的
一次不必经历
实例化每个库 使用下面记录的所有方法和属性
只需按说明创建一次对象即可 所有代码都遵循上述代码 可以对其使用任何lxml方法。有关lxml的更多信息,请访问http://lxml.de/rajatomar788@gmail.com
1.1安装
pywebcopy
在pypi上可用,并且可以使用pip轻松安装
属性
只读所有文件结束的位置
当您试图保存整个网页时。$ pip install pywebcopy
1.1.1第一步
>>>importpywebcopy>>>pywebcopy.__version___6.0.0
1.2基本用法
frompywebcopyimportsave_webpagekwargs={'project_name':'some-fancy-name'}save_webpage(url='http://example-site.com/index.html',project_folder='path/to/downloads',**kwargs)
frompywebcopyimportsave_websitekwargs={'project_name':'some-fancy-name'}save_website(url='http://example-site.com/index.html',project_folder='path/to/downloads',**kwargs)
1.3运行测试
$ python -m pywebcopy run-tests
1.4命令行界面
pywebcopy
有一个非常易于使用的命令行界面
可以帮助你完成任务而不必担心内心
很长一段路。获取命令列表
$ python -m pywebcopy -- --help
使用API
$ python -m pywebcopy save_webpage http://google.com E://store// --bypass_robots=True
or
$ python -m pywebcopy save_website http://google.com E://store// --bypass_robots
运行测试
$ python -m pywebcopy run_tests
1.5认证和cookies
pywebcopy
进行身份验证非常容易,因为它使用
requests.session
可访问的基本http活动的对象
通过pywebcopy.session
属性。如你所知
有很多关于使用requests.session
设置身份验证的教程
importpywebcopy# Update the headers with suitable datapywebcopy.SESSION.headers.update({'auth':{'username':'password'},'form':{'key1':'value1'},})# Rest of the code is as usualkwargs={'url':'http://localhost:5000','project_folder':'e://saved_pages//','project_name':'my_site'}pywebcopy.config.setup_config(**kwargs)pywebcopy.save_webpage(**kwargs)
2.1
网页
类网页
类,此保存操作的引擎。
你可以使用这个类访问更多的方法
使用自定义流程。pywebcopy
包导入此类。$ pip install pywebcopy
0
requests
模块获取
给你。参数
它将接受
例如,代理、身份验证等。
$ pip install pywebcopy
1
$ pip install pywebcopy
2
2.1.2
网页
属性和方法网页
对象的api
通过上述任何方法
文件路径属性
只读此文件结束的位置
当您试图保存解析的HTML源代码时
.utx
类的属性。你可以
请在下面查找。.utx
类的属性。你可以
请在下面查找。。保存资产
方法
此方法保存所有的csscss
,
js
,
images
,
fonts
等。
在您通过property
设置的文件夹中。project\u path
$ pip install pywebcopy
3
。保存HTML
方法
在设置网页
实例后,您可以
使用此方法保存已分析的
并在
.file路径的属性值处修改html。
$ pip install pywebcopy
4
。保存完成
方法
这是您将要使用的重要api
经常用于保存或克隆网页供以后使用
阅读或任何用例。css
,
js
,
images
,
fonts
等。
按与大多数浏览器相同的顺序单击
右击菜单中的
保存页
选项。$ pip install pywebcopy
5
3.1刮片支架
$ pip install pywebcopy
6
< Buff行情>支持美化组方法
$ pip install pywebcopy
7
$ pip install pywebcopy8
您可以对其使用pyquery方法。有关pyquery的详细信息,请访问https://pythonhosted.org/pyquery/
$ pip install pywebcopy9
lxml.xpath也受支持
xpath本身也受支持,它返回一个:class:requests\u html.element
详见https://html.python requests.org
>>>importpywebcopy>>>pywebcopy.__version___6.0.0
0
xpath本身也受支持,它返回一个:class:requests\u html.element
详见https://html.python requests.org
>>>importpywebcopy>>>pywebcopy.__version___6.0.0
0
仅选择包含特定文本的元素
通过requests\u html
模块提供。
>>>importpywebcopy>>>pywebcopy.__version___6.0.01
爬虫程序
对象
这是网页
类的子类,可用于镜像任何网站。
>>>importpywebcopy>>>pywebcopy.__version___6.0.02
常见设置和错误
你很容易犯初学的错误,或者会搞糊涂, 下面是常见的错误,如果你 面对他们。
pywebcopy.exceptions.accesserror
如果您得到的是
pywebcopy.exceptions.accesserror
exception。 然后检查网站是否允许删除其内容。>>>importpywebcopy>>>pywebcopy.__version___6.0.0
3复制时覆盖现有文件
如果要覆盖目录中的现有文件,则 使用over-write配置键。
>>>importpywebcopy>>>pywebcopy.__version___6.0.0
4更改项目名称
默认情况下,pywebcopy在project_文件夹中创建一个目录 使用您提供的url,但您可以使用以下代码更改它 低于
>>>importpywebcopy>>>pywebcopy.__version___6.0.0
5 < > >使用方法在global
pywebcopy.config
对象上设置配置您可以使用
。设置配置
调用。frompywebcopyimportsave_webpagekwargs={'project_name':'some-fancy-name'}save_webpage(url='http://example-site.com/index.html',project_folder='path/to/downloads',**kwargs)
1 完成了!将配置变量直接传递到
全局API,例如
。保存网页
要更改任何配置,只需将其传递到
api
调用即可。示例:
frompywebcopyimportsave_webpagekwargs={'project_name':'some-fancy-name'}save_webpage(url='http://example-site.com/index.html',project_folder='path/to/downloads',**kwargs)
2可用配置列表
下面是
配置键及其默认值的列表:
frompywebcopyimportsave_webpagekwargs={'project_name':'some-fancy-name'}save_webpage(url='http://example-site.com/index.html',project_folder='path/to/downloads',**kwargs)
3- 在github repo上给它一颗星星
- 在github repo上报告错误:https://github.com/rajatomar788/pywebcopy/或在我的电子邮件中。
- 在github repo上创建请求:https://github.com/rajatomar788/pywebcopy/" rel="nofollow">https://github.com/rajatomar788/pywebcopy/
- 发送感谢邮件
- 中断更改使用
python fire
库创建新的命令行界面。 - 在
config.setup路径中实现类型检查和路径规范化
- 添加了新的动态
pywebcopy.\u所有
attr generation.
网页
类现在不接受任何参数(中断更改)网页
类有新方法网页.获取
和网页.设置源
- 下载队列替换为管理活动线程的屏障
- 优化现有代码,在某些情况下可提高5倍的速度
- 消除了混乱,提高了可读性
- 核心功能的完整重写和重组。
core.setup配置
函数更改为config.setup配置
- 添加了
utils.trace
decorator,当debug config key为true时,它将打印函数名,参数,kwargs和返回值。 - 新的HTML解析器('html5lib','lxml')支持更好的网页。
- HTML解析器现在默认为"lxml"。您可以使用任何通过new
config.config
键调用parser
- 修正了更改
用户代理
密钥破解网页时出现的问题。您现在可以使用任何浏览器的用户代理ID,它将得到完全相同的页面下载。
- 修正了由python3中的
str
和bytes
差异引起的generators.extract\css\uURL
问题。 - 修复了模块导入中的问题。(谢谢你)。
- 将
错误处理
添加到所需函数 init
函数替换为保存网页
- 增加了三个新的自动化功能-
core.setup\u config(仅从url和下载位置创建每个理想配置)
配置重置配置
(将配置重置为默认状态)config.update配置
(手动模式版本的core.setup配置
)
- 对象
结构.网页
已添加 - 合并的
生成器。生成"U样式"映射
和生成器。生成"U相对"路径
到单个函数生成器。生成"U样式"映射
- 重写大多数函数
- 新增模块
异常
已添加 url
在启动任何工作功能之前,会检查并解析任何重定向。init
vars:mirrors\u dir
和clean\u up
已修复,在日志完全写入之前清除了dir。init
call现在默认采用url
arg,如果不提供,则可能引发错误- 专业的日志条目
- 重写的存档系统现在使用
zipfile
和异常处理来防止错误和最终的存档损坏
- 更多冗余代码
- 模块现在根据类型分开,例如磁芯、发电机、实用程序等。
- 新的助手函数和类
结构.webpage
- 与Python2.6、2.7、3.6、3.7兼容
如何保存单个网页
使用以下方法可以轻松保存特定网页。
注意:如果您在运行这些代码时得到pywebcopy.exceptions.accesserror
,请使用后面部分提供的代码。
方法1:通过API-save_webpage()
使用名为的内置功能可以轻松保存网页。save_webpage()
需要几个
参数也是。
>>>importpywebcopy>>>pywebcopy.__version___6.0.06
方法2
这个用例稍微强大一些,因为它可以提供网页类的唯一性。
>>>importpywebcopy>>>pywebcopy.__version___6.0.07
方法2使用纯html
我之前告诉过你,网页对象功能强大,可以以任何方式操作。
一个特点是原始的html现在也被接受了。
>>>importpywebcopy>>>pywebcopy.__version___6.0.08
如何克隆整个网站
复制网站时要小心,因为这可能会使 站点的服务器很少可能是非法的,所以请检查之前的所有内容 继续。
方法1:通过API-save_website()
使用内置的api.save_website()
这需要几个参数。
>>>importpywebcopy>>>pywebcopy.__version___6.0.09
方法2-
创建一个crawler()对象,该对象还提供其他几个函数。
frompywebcopyimportsave_webpagekwargs={'project_name':'some-fancy-name'}save_webpage(url='http://example-site.com/index.html',project_folder='path/to/downloads',**kwargs)0
1.3配置
pywebcopy
是高度可配置的。可以设置全局对象
使用pywebcopy.config
对象公开的方法。
更改全局配置的方法如下-
4.1贡献
您可以在许多方面做出贡献
如果您有任何建议、修复或报告,请随时给我发邮件:)
5.1未记录的功能
我在这个项目中构建了许多实用程序和类来简化 我正试图完成的任务。
<但是, 这些任务也适用于一般用途。
如果需要,您可以帮助为这些未记录的文档生成合适的文档,
然后您可以随时创建并请求或发送电子邮件给我。