Pyspider+Python3.6.8 杰奇py采集系列,环境部署教程。有视频!

  • A+

我的安装目录(可自行更改自己的目录)
/www/Tools/Pyspider/Start
Python项目管理器
名称:
Pyspider
路径:
/www/Tools/Pyspider/Start
Python版本:
python 3.6.8
框架:
python
启动方式:
自定义
启动文件/文件夹:
pyspide
端口:
5000
其他请看视频

source /www/Tools/Pyspider/Start/Pyspider_venv/bin/activate
pip3 install pyspider
pip3 install -r requirements.txt
启动:
pyspider
nss或者openssl错误,请卸载pycurl,根据错误设置后再安装
pip3 uninstall pycurl
nss错误:
export PYCURL_SSL_LIBRARY=nss
pip3 install --compile --install-option="--with-nss" --no-cache-dir pycurl
openssl错误:
export PYCURL_SSL_LIBRARY=openssl
pip3 install --compile --install-option="--with-openssl" --no-cache-dir pycurl
python3安装pyspider控制台肯定会出错,请卸载控制台重新安装指定版本或者修改代码
pip3 uninstall werkzeug -y        # 卸载
pip3 install werkzeug==0.16.1   #安装0.16.1版本
或者
python3 -m pip3 uninstall werkzeug -y  # 卸载
python3 -m pip3 install werkzeug==0.16.1   #安装0.16.1版本

1,卸载重装指定版本:
pip3 uninstall wsgidav
pip3 install wsgidav==2.4.1
2,修改代码:
# pyspider文件路径 pyspider/webui/webdav.py
# 209行:'domaincontroller': NeedAuthController(app)
# 修改如下
config = DEFAULT_CONFIG.copy()
config.update({
    'mount_path': '/dav',
    'provider_mapping': {
        '/': ScriptProvider(app)
    },
    #'domaincontroller': NeedAuthController(app),
    'http_authenticator': {
        'HTTPAuthenticator':NeedAuthController(app),
    },
    'verbose': 1 if app.debug else 0,
    'dir_browser': {'davmount': False,
                    'enable': True,
                    'msmount': False,
                    'response_trailer': ''},
})
dav_app = WsgiDAVApp(config)
然后执行:
python setup.py install
重新打包程序安装

请安装phantomjs用于js的支持

采集时候的JS支持
tar -xf phantomjs-2.1.1-linux-x86_64.tar
mv phantomjs-2.1.1-linux-x86_64 phantomjs
cp -r phantomjs /usr/local/phantomjs
ln -sv /usr/local/phantomjs/bin/phantomjs /usr/bin/phantomjs

配置网站根目录和数据库
/www/Tools/Pyspider/Start/config.ini
数据库账号和密码就不展示了:)
为了安全配置控制台账户和密码
/www/Tools/Pyspider/Start/config.json
config.json里面可以设置自定义端口,格式
"port": "5000"
改为自定义,记得防火墙开放端口哦
最后把cms.so和key复制到
/www/Tools/Pyspider/Start/Pyspider_venv/bin
目录下,回控制台采集去吧!

守护进程
我的设置(可自行更改自己的目录)
项目名称:
Pyspider
运行目录
/www/Tools/Pyspider/Start
启动文件
/www/Tools/Pyspider/Start/Pyspider_venv/bin/pyspider
启动参数
-c /www/Tools/Pyspider/Start/config.json
分类的设置在:

def fiction_classify(self,classify):
里面
basic = 1,匹配sort.php文件的['article'][1]数字,
每个分类2个数字相同

如果提示错误:ImportError: libpython3.6m.so.1.0:
请进虚拟机环境下安装

source /www/Tools/Pyspider/Start/Pyspider_venv/bin/activate
yum install -y python3-devel.x86_64

基本介绍

1.一个项目有5个状态:TODO,STOP,CHECKING,DEBUG和RUNNING
TODO – 刚创建,正在编写脚本
如果您希望项目停止(= =),可以将其标记为STOP。
CHECKING – 当正在运行的项目被修改时,为了防止未完成的修改,项目状态将被设置为自动检查。
DEBUG/RUNNING – 这两种状态对爬虫没有区别。但最好在第一次运行时将其标记为DEBUG,然后在检查后将其更改为RUNNING。

2.爬行速率由rate 和burst并采用令牌桶算法进行控制。
rate – 一秒钟内有多少请求(即一秒钟爬多少次)
burst (爆发)- 考虑这种情况,RATE/BURST=0.1/3,这意味着蜘蛛每10秒抓取1个页面。所有任务都已完成,Project将每分钟检查最后更新的项目。假设找到3个新项目,pyspider将“爆发”并爬行3个任务,而不等待3*10秒。但是,第四个任务需要等待10秒

速度控制:rate是每秒爬取页面数 , burst是并发数 ,如1/3是三个并发,每秒爬取一个页面。

3.若要删除项目,请将“组”(group)设置为“删除”(delete),将“状态”设置为“停止”,然后等待24小时。

更多pyspider使用教程请查看技术文档
https://book.crifan.com/books/python_spider_pyspider/website/
pyspider介绍

一、pyspider介绍
1.基本功能
提供WebUI可视化功能,方便编写和调试爬虫
提供爬取进度监控、爬取结果查看、爬虫项目管理
支持多种数据库,MySQL、MongoDB、Redis、SQLite、PostgreSQL等
支持多种消息队列,RabbitMQ、Beanstalk、Redis等
提供优先级控制、失败重试、定时抓取等
对接了PhantomJS,可实现对JavaScript页面的抓取
支持单机、分布式、Docker部署

2.pyspider 与 scrapy 对比
pyspider提供WebUI,scrapy原生不具备此功能
pyspider调试方便
pyspider支持PhantomJS、scrapy支持scrapy-Splash组件
pyspider内置pyquery作为选择器,scrapy对接了XPath、CSS选择器和正则表达式
pyspider扩展程度低

3.框架设计
三大模块:调度器(Scheduler)、抓取器(Fetcher)、处理器(Processer)

4.具体流程
1.每个pyspider项目都对用一个Python脚本,该脚本定义了一个Handler类,使用on_start()方法,开始项目,然后交由scheduler进行调度处理
2.Scheduler将抓取任务传给Fetcher,Fetcher响应完成后,将响应传给Processer
3.Processer处理并提取新的URL再通过消息队列的方式传给Scheduler,如果生成了新的提取结果,则发往结果队列等待Result Worker处理
4.循环上述过程,直到抓取结束,结束时会调用on_finished()

5.例子
二、pyspider详解
1.启动:
pyspider all
2.crawl()方法
url:爬取的URL,可以定义为单个URL字符串或URL列表
callback:回调函数,指定了该URL对应的响应内容应该由哪个方法来解析
age:任务的有效时间
priority:优先级,默认为0,越大越优先
exetime:可以设置定时任务,其值是时间戳,默认是0,代表立即执行
retries:重试次数,默认是3
itag:设置判定网页是否发生变化的节点值
auto_recrawl:开启后,爬取任务在过期后重新执行
method:HTTP请求方式
params:定义GET请求参数
data:定义POST请求参数
files:上传的文件,需指定文件名
user_agent:User-Agent
headers:Request Headers
cookies:Cookies,字典格式
connect_timeout:初始化连接时最长的等待时间,默认是20秒
timeout:抓取网页的最长等待时间,默认是120秒
allow_redirects:确定是否自动处理重定向,默认是True
validate_cert:是否验证证书,默认是True
proxy:代理
fetch_type:开启PhantomJS渲染
js_script:页面加载完毕后执行的JavaScript脚本
js_run_at:脚本运行位置,默认在节点结尾
js_viewport_width/js_viewport_height:JavaScript渲染页面的窗口大小
load_images:确定是否加载图片,默认是False
save:在不同的方法之间传递参数
cancel:取消任务
force_update:强制更新状态
3.任务区分:
判断是否为同一任务,将比较URL的MD5值是否一样
4.全局配置:
在crawl_config中指定全局配置
5.定时爬取
通过every属性来设置时间间隔
6.项目状态:
TODO 刚创建还未执行
STOP 停止
CHECKING 运行的项目被修改后
DEBUG/RUNNNING 运行
PAUSE 多次出错,挂起或暂停
7.删除项目
将状态设置为STOP,分组名称修改为delete,24小时后自动删除

所需文件下载:

此处为隐藏的内容!
发表评论并刷新,方可查看

weinxin
QQ群:20764411
QQ群扫码加群
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:7   其中:访客  7   博主  0

    • avatar 闲人 0

      高的这么好啊,学习下。

      • avatar 微博 0

        高人啊!

        • avatar tangniyuqi 0

          请问下怎么实现pyspider的顺序抓取

          2个方案,1.先入库。2.先写入内存。你随意都可以

          • avatar kaozhu 0

            牛皮

            • avatar CAICAI 0

              看起来就很吊。

              • avatar hkthomas 0

                是个好东西。

                • avatar xuexixuexi 0

                  学习 谢谢 xuexiyixia xiexie :idea: :idea: