一、写在前面
首先声明一下,我其实并不是搞php的,写代码一般都是用的C++和Python。对于PHP,只是很多年前自己做博客写了几天。最近换工作等着离职,没事做,所以写个插件玩玩。如果觉得不好用的地方,请给我些建议。好的建议我会采纳,争取把这个插件做得更好。
在开发这个插件的时候,已经考虑到了尽量让配置更简单易懂。但是为了使插件更灵活,所以还是需要了解一下正则和xpath规则。如果你懂,我相信这个教程一你看就会明白了,完全没有什么难度。如果你之前没有接触过正则和xpath也没关系,因为其实真的不需要懂,只要看例子copy就行了。因为是第一个版本,所以可能有些地方写的不太详细,欢迎大家指出来。
二、下载和安装
首先,打开https://crawling.cn下载最新版,得到crawling_v*.tar.gz。
然后,解压压缩包,上传到WordPress插件目录。激活插件。
三、任务管理
一个任务可以理解为一个爬虫,在这里你可以配置多个任务,每个任务可以单独设置参数。
比如,这里我设置了三个任务,如图:
第一个任务是爬取“且听风吟”(这是我比较喜欢的一个电影网站)的全部内容,抓取间隔设置为-1表示只采集一次,不会重复执行。
第二个任务是爬取“且听风吟”的前三页,如果采集过的不会重复采集,只会抓取前三页的更新的内容。每隔24小时采集一次。
第三个任务是爬取“阳光电影网”(这是电影天堂的新网站)的首页的全部更新的电影,因为阳光电影所有的更新都在首页。每隔24小时采集一次。
每个任务单独设置的参数,如图:
下面是每个任务的设置:
1 任务名称:
每隔任务的别名,方便好记而已,没有其他作用。
2 入口网址:
每个任务爬虫开始的地址。这个网址一般是首页或者列表页。然后爬虫会从这个页面开始采集。
3 爬取间隔时间:
每隔任务(爬虫)运行的间隔时间。
4 列表页面url正则/内容页面url正则:
爬虫进入第一个网址(入口网址)后需要区分哪些是需要采集的内容页面。所以需要设置匹配的内容页面url正则表达式。
爬取还需要知道如何进行翻页,寻找更多的内容页面,所以需要设置列表页面url的正则表达式。
例如:抓取“且听风吟”整站的内容
打开网站首页www.qtfy.cc。发现所有的列表页面网址都为https://www.qtfy.cc/page/数字,而内容页面网址都为https://www.qtfy.cc/ysyl/数字.html
列表页面
内容页面
所以正则表达式如下:
列表页面url正则:\/page/[1-9]\d*$
内容页面url正则:\/[1-9]\d*.html$
如果只需要采集前三页更新的内容,只需要把列表页面的正则表达式改为\/page/[1-3]$。
配置这两个参数时可以打开《正则表达式在线测试》页面测试。
5 文章标题(xpath)/文章内容(xpath):
进入内容页面后,爬虫要选择抓取的内容,比如文章的标题和文章的正文。所以需要设置xpath来告诉爬虫。
例如:
打开且听风吟的一个页面,如:https://www.qtfy.cc/ysyl/14352.html。通过浏览器查看页面源代码,如图:
可以看到,文章的标题是包含在
这个元素中的元素中的。所以标题的xpath规则为://h1[@class=”mscctitle”]/a
同样,通过上图可以看见:内容是包含在
中的,所以内容的xpath规则为://div[@class=”content-text”]
配置完成可以打开《XPath在线测试》页面测试。
6 内容起始字符串/内容结束字符串:
一般的网站都会有广告,或者一些其他的东西混在内容里面,所以我们需要过滤掉这些内容,只保存我们需要的部分。而这部分无用的东西(广告、分享按钮、标签等)大部分都是在文章的开头或者结束部分,并且内容是固定的。所以我们可以通过简单的字符串过滤掉。
例如《且听风吟》的每篇文章的内容部分开头就有一段广告,如上图。
通过《XPath在线测试》页面测试我们上一步配置的内容xpath规则,可以得到文章内容,如下图:
可以看到,真正的内容是从
之后开始的。
所以内容起始字符串设置为:
因为文章内容后面并没有多余的部分,所以后面不用过虑,内容结束字符串设置为空就可以了。
7 文章图片:
采集插件可以自动将文章内出现的图片保存到本地,默认按年月分文件夹保存,并会将图片的标签设置为文章的标题。如果不需要保存到本地可以选择“不做处理”。
8 文章分类:
选择要保存到的分类,和wordpress一样,可以选择多个分类。
9 文章标签:
每个任务可以单独设置标签,多个标签用|分隔。
10 发布方式:
可以选择“立即发布”或者“放入草稿箱”。
四、高级选项
爬取线程数:
这个选项根据自己的主机配置来设置。如果是在独立主机上,可以设置成多线程采集,比如同时开10个线程。如果是在虚拟主机上,不要设的太大,不然CPU占用太高被封站。
抓取延时:
每个页面采集过后的延时,防止采集过快。这个参数也是为了防止网站虚拟主机和被采集网站因为采集太快而禁止访问。
五、最后
配置完之后,剩下的就是等待插件执行了,如果执行到一半想要终止程序,可以切换插件运行状态,在“任务管理”页面的顶部。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。