PHP-目前想做一个抓取书籍程序,请大家提供一个方案?

发布于 2016-12-24 15:13:21 字数 55 浏览 1163 评论 3

同时开50个进程,只抓取新增的章节和纯文字的文章,只抓取一个网站的文章,再保留几个网站作为备选。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

归属感 2017-05-16 05:13:05 3 楼

我转一篇淘宝文章《快速构建实时抓取集群》,有时间可以研究下。文章介绍了一个分布式实时抓取架构模型。系统主要用到Scrapy(python抓取工具包),mysql+redis(存储)。
mysql用来存放抓取的网页,为后续的抽取和处理;redis做了几种数据结构(抓取队列,链接库,已抓取集合)。

归属感 2017-04-03 10:59:51 2 楼

1.多进程的话你可以考虑用shell和pcntl_fork()结合起来实现,用计划任务控制shell每30分钟执行一次。
2.你可以事先保存起来每本书籍的多个网站的list页,用curl抓取页面内容,然后分析出每个list页都有多少张新章节,选可更新章节最多的抓取,其他的list页有多少可更新章节也记录下来,用来备选,至于你只要纯文字的文章,你可以获得该页面的文字数若大于1200个汉字认定为纯文字的文章,其他的认定为图片,这你可以调试时再调整。
3.最后就是数据存储了,第一个表存储书的基本信息包括书的id、书名、书的最新章节(每次抓取后更新)、多个网站list页的地址及可更新章节的数目(每次抓取后更新);第二章表存每本书各个章节的内容,包括书的id,章节号、章节标题、章节内容;第三张表用作抓取控制包括书的id,书的最新章节(每次抓取后更新),上次的抓取时间、抓取间隔、抓取标志位(为了当这本书正在抓取时,就不开新的进程抓取了)。

泛泛之交 2017-02-09 11:53:07 1 楼

1.研究网站入口,这个要具体网站具体分析,分析它的url

2.利用file_get_contents函数打开图书列表list,抓取列表分析那些是最新更新文章。

3、一般每篇文章都会有个id,然后依次抓取每篇文章内容保存到本地,利用正则过滤你需要的文章(比如只需要文字文章)。当然了这步是最关键的,其实每个网站的文章页都有固定的样式,比如文章标题是啥标签,内容是啥标签都是固定,这样你就用正则来过滤你想要的东西。

暂时想到这些。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击“接受”或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文