概述
本系统基于ThinkPHP5.0 + QueryList + Puppeteer + think-queue开发的数据采集系统。本系统已申请软著,请放心使用。本系统100%开源,如需商用请购买授权。
QueryList:QueryList是一套用于内容DOM解析的PHP工具,它使用更加现代化的开发思想,语法简洁、优雅,可扩展性强。相比传统的使用晦涩的正则表达式来做DOM解析,QueryList使用了更加强大而优雅的CSS选择器来做DOM解析,大大降低了PHP做DOM解析的门槛,同时也让DOM解析代码易读易维护,让你从此告别晦涩难懂且不易维护的正则表达式。
Puppeteer:使用PuppeteerDOM解析JavaScript动态渲染的页面。使用此插件需要有一定的Node.js基础知识,并且会配置Node运行环境。
安装
完整版安装
直接下载完整版,然后导入addons › spider下的install.sql和testdata.sql数据库文件即可。
完整版只需要安装node依赖,该依赖需要在网站根目录安装。
npm install @nesk/puphpeteer
插件化安装因使用FastAdmin作为后台,所以支持插件化安装(不支持从FastAdmin插件商城直接下载安装、不支持从FastAdmin插件商城直接下载安装、不支持从FastAdmin插件商城直接下载安装),但是需要把配置文件config.php中的unknownsources设置为true并开启调试模式,然后点击本地安装即可。
依赖安装
安装QueryList
composer require jaeger/querylist
详细文档可以查看QueryList官方文档:https://querylist.cc/v4/guide/quick-look.html安装Puppeteer
composer require jaeger/querylist-puppeteer
安装node依赖,该依赖需要在网站根目录安装。npm install @nesk/puphpeteer
这需要服务器有node环境,Node >= 8,宝塔用户安装完node.js版本管理器后需要设置命令行版本。
详细可查阅Puppeteer官方文档:https://querylist.cc/v4/guide/Puppeteer.html
PHP扩展安装
安装php扩展fileinfo、redis
使用
列表采集
如上图:列表切片选择器为
#list > div.fl > ul > li
1、如何获取:在谷歌浏览器按F12或者直接在页面点击右键点击检查调出调试模式,鼠标移动到需要DOM元素上面,点击右键弹出Copy > Copy selector即可获取到选择器;如最后一个选择器带有类似li:nth-child(1)则需要把:nth-child(1)删掉。2、如果现在需要获取列表页的标题,则标题的选择器为div > h2,这个只要从切片选择器后面开始算就行了。不能复制全部的,如#list > div.fl > ul > li > div > h2。
3、获取其它字段同理。
采集规则
1、采集字段名:采集字段名可以自定义,但如需获取详情页链接则需要有一个字段设置为url;
2、DOM属性:如text、href、src、data-src等;
3、采集规则:例如完整选择器为#list > div.fl > ul > li > div > h2,切片选择器为#list > div.fl > ul > li,则采集规则为div > h2;
4、过滤标签一般不填;
5、数据额外处理:如果不能直接获取详情页链接,但是详情页的某个参数设置在DOM属性里面,则需要配置该选项,然后找到详情页链接规律手动拼接。如下图。该DOM内容为data-log-title="item-F10038187001",则获取到的值为item-F10038187001,需要的值从下标为5开始截取。
详情页采集
详情页采集规则和列表页同理。
任务自动发布
任务自动发布使用宝塔的计划任务功能,任务类型选择访问URL,URL地址为`http://yousite/addons/spider/auto_task/index?id=1`,其中id为后台添加的任务ID,为了安全还可以增加一个`task_key`参数,参数值和后台设置的一样即可。
常见问题
1、报错内容
[Nesk\Rialto\Exceptions\Node\FatalException] Failed to launch the browser process! /www/wwwroot/spider.gzybo.net/node_modules/puppeteer/.local-chromium/linux-818858/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
则需要安装chrome-linux需要的依赖,全部依赖如下:
Debian(e.g. Ubuntu):
ca-certificates fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils
CentOS:alsa-lib.x86_64 atk.x86_64 cups-libs.x86_64 gtk3.x86_64 ipa-gothic-fonts libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXrandr.x86_64 libXScrnSaver.x86_64 libXtst.x86_64 pango.x86_64 xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-fonts-cyrillic xorg-x11-fonts-misc xorg-x11-fonts-Type1 xorg-x11-utils
检查依赖命令:
ldd node_modules/puppeteer/.local-chromium/linux-818858/chrome-linux/chrome | grep not
linux-818858可能不一样需要换成自己的。如果还报错则需要安装nss库
yum install nss -y
,如果没有则更新一下nss库
yum update nss -y
联系我们
如需开票请添加企业微信
鸣谢
ThinkPHP:http://www.thinkphp.cn
FastAdmin:https://www.fastadmin.net
QueryList:https://querylist.cc
版权信息
版权所有Copyright © 2023 by 远铂品牌管理 (https://www.gzybo.net)
All rights reserved。
发表评论 取消回复