PHP爬虫小结
时间:2021-9-6 作者:smarteng 分类: PHP相关
PHP爬虫
现在网络上有很多很多的爬虫了,各式各样的,
但是大家都不太喜欢用PHP来写爬虫,可能是由于不稳定,可以组件库太少,
不管怎么样,PHP写起来还是很简单的。
curl 实现方法
直接采用 PHP curl来抓取数据
socket方法
采用最原始的socket方法,
这里有一个 https://github.com/hightman/pspider 项目,很完善,也是采用了socket方式。
file_get_contents 方法
file_get_contents 方法 ,这个最直接,但是有的虚拟机可能会有限制。
我用的是腾讯云的主机,没有任何限制,就直接用curl方法了
爬取网页步骤
设置种子url,一般都是站点的域名,通过这个主页一步一步抓取
抓取种子url,分析这个页面,获取所有的相关的url,根据是否抓取外站策略来判断url是否入队列,这里队列实现就比较多样化了,可以redis ,也可以数据库,我就直接数据库保存了。
处理url,判断是否是需要抓取的网页
如果是要抓取的网页,处理入库
如果不是,就更新队列
有多个PHP的爬虫推荐:
https://github.com/smarteng/php-crawler
https://github.com/smarteng/pspider
https://github.com/smarteng/skycaiji
https://github.com/smarteng/QueryList
这里重点说一下第一个:
一个用PHP实现的轻量级爬虫,只提供了爬虫最核心的调度功能,所以整体实现非常精简,使用也非常简单并且易于上手。
特点
轻量级,内核简单非常易于上手
基于Redis的调度插件支持分布式以及断点抓取
易扩展易定制,可以随时按照自己的需求定制调度插件
smarteng
人生就流星,虽然转瞬即逝,但也有永恒。
- 使用Erlang的OTP框架创建应用
- php 使用curl模拟登录discuz以及模拟发帖
- 新浪微博错误代码解析
- 腾讯QQ、阿里旺旺、淘宝、MSN在线状态代码生成
- erlang程序设计笔记
- 《HTML 5与CSS 3权威指南》权威的HTML5与CSS3实战教程
- dedecms修改数据库密码配置文件
- 服务器优化小记--Etag和Expires
- 在PHP5中使用PHPMailer发送邮件
- PHP中冒号、endif、endwhile、endfor介绍
- PHP框架——ThinkPHP
- QQ登陆成功返回openId后与网站绑定
- Mediawiki的配置和修改方法
- 使用Golang的官方mock工具--gomock、mockgen
- 用yaf-codes-generator 生成代码
- MacOs 电脑关闭/打开IPV6
- MySQL中datetime和timestamp的区别
- C++声明结构
- 如何保证数据库和缓存的一致性
- 优雅的golang日期时间处理库go-carbon
- API接口纪要
- 解析 Golang 测试(11)- 模糊测试
- 解析 Golang 测试(10)- 什么是好的单测
- 解析 Golang 测试(9)- 一篇文章搞懂 testify
- 解析 Golang 测试(8)- gomonkey 实战
- 解析 Golang 测试(7)- 如何针对 Redis 进行 Fake 测试
- 解析 Golang 测试(6)- 如何针对 MySQL 进行 Fake 测试
- 解析 Golang 测试(5)- MySQL 经典 mock driver—— sqlmock
- 解析 Golang 测试(4)- 一篇文章教你分清 Mock,Stub,Fake
- 解析 Golang 测试(3)- goconvey 实战
- 2023年11月(1)
- 2023年10月(1)
- 2023年3月(2)
- 2023年2月(1)
- 2022年12月(1)
- 2022年9月(13)
- 2022年8月(5)
- 2022年7月(9)
- 2022年6月(2)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(2)
- 2021年12月(1)
- 2021年11月(14)
- 2021年10月(2)
- 2021年9月(111)
- 2015年3月(1)
- 2014年5月(4)
- 2014年4月(18)
- 2014年1月(1)
- 2013年11月(2)
- 2013年7月(1)
- 2013年6月(1)
- 2013年3月(13)
- 2013年2月(3)
- 2013年1月(1)
- 2012年12月(8)
- 2012年11月(8)
- 2012年10月(1)
- 2012年9月(13)
- 2012年8月(4)
- 2012年6月(2)
- 2012年5月(10)
- 2012年4月(13)
- 2012年3月(9)
- 2012年2月(8)
- 2011年11月(1)
- 2011年8月(9)
- 2011年7月(8)
- 2011年6月(8)
- 2011年5月(7)
- 2011年4月(19)
- 2011年3月(15)
- 2011年2月(8)
- 2011年1月(9)
- 2010年12月(2)
- 2010年11月(2)
- 2010年10月(2)
- 2010年9月(8)
- 2010年8月(9)
- 2010年7月(1)
- 2010年6月(9)
- 2010年5月(5)
- 2010年1月(7)
- 2009年12月(21)
- 2009年11月(29)
- 2009年10月(100)
- 2009年8月(1)
- 2009年7月(15)
- 2009年6月(52)