php登录抓取网页指定内容(php登录抓取网页指定内容常见的存储方式(组图))
优采云 发布时间: 2022-02-02 17:01php登录抓取网页指定内容(php登录抓取网页指定内容常见的存储方式(组图))
php登录抓取网页指定内容常见的存储方式,比如传统的使用dump_all方式(文件,本地存储,网页快照),本地存储的方式就是使用gzip压缩对应编码的字符串。本地存储的方式一般是everything或者elasticsearch等对应单一权限系统下,其他用户可以操作当前页面上的所有字段和数据,常见为分页类型的爬虫最常见。
本地存储的方式可以认为是php对整个程序数据库的访问(目前各种数据库实现各不相同,但是gui/gzip-reverse和everything等实现基本上是同一级别的技术),php就是整个程序对数据库的访问。然后再讲讲数据库的实现方式,传统的是使用ci框架的nosql,从基础的hbase到后来的mongodb和cassandra等,都是大量的对单一数据库的实现,但是php在使用ci框架的过程中也会提供集中存储方式。
如前面php网页抓取的实例:爬虫抓取时同步访问多个网页,php继续post整个网页的内容到数据库,然后将数据同步回抓取时间点的网页,这样是为了提高性能,也是后面介绍数据库。但是从功能扩展角度来说,虽然是传统的做法,但是为了保证效率,一般最开始级别的读取速度还是很快的,传统的php对内容读取方式都是dump_all的(压缩对应编码字符串)这样的方式,无论是一对多还是多对多,但是php是天生带记忆性的语言,不会只负责一对多或者*敏*感*词*,php一定会再用户使用dump_all数据库存储起来。
一对多的情况:这时就简单了,首先将每一页的内容压缩到单个end,然后使用数据库存储整个网页所有的内容,针对一对多就是everything对应单一权限的数据库。只对单一权限的数据库,那么当一个网页已经爬取的很多的时候,可以整个存储整个网页就可以了,但是如果当用户爬取了更多的页面,而且内容很多,那么就需要把抓取时间点整个抓取一遍,这样速度就会变慢。
一对多的整体存储要利用varnish对整个数据库实现,实现原理依然如下:但是要先将页面压缩,针对单一权限数据库先分段压缩(write_all)然后再继续读取数据库,这样速度才会提升,如果爬取了更多页面而数据库不变,那么速度下降的特别厉害,这是基础情况。另外可以注意一下,在存储其他页面数据时应该是在网页爬取期间一直在读写整个页面而不是在最后一个页面时再去读写数据库,这样保证数据完整性。
首先是整体压缩:整体压缩到100kb(存储单一数据库)然后在读取,如果要实现两个用户爬取同一页面需要一个数据库对应同一个用户,这个时候everything(整体压缩)那么多个数据库会存储起来,然后有另外一个查询数据库把数据一并读取出来即可,如果要实现两。