对应杰奇2.4版本
我的安装目录(可自行更改自己的目录)/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 -y 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 -y 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小时后自动删除