「这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战」
PHP除了做服务端开发已经,也是可以像Python一样来爬取数据的。
我认为爬取数据有两种实现思路:
1种是请求数据接口,解析json数据
另外1种是获得网页的dom树,解析dom树,获得数据。
今天重点介绍第二种,引用php的一个插件:simple_html_dom
,解析json的思路也提一下。
解析json
解析json这种方式很好理解,所有支持请求网络的开发语言都能支持
思路就是获得爬取链接返回的json数据(也可以是其他类型的数据,json比较常用)
我们拿到json数据后进行解析,结合自身需求来处理数据。
这个比较通用,就不举例子了。
解析dom树
重点讲解一下PHP是如何爬取目标网站,解析dom树的。
举个栗子:
工具类代码:
做了缓存处理,我的场景只要请求的url相同返回的数据是不变的,所以做了缓存处理
请求的url之前请求通,不会重复请求,而是会从缓存中取值
sleep()的作用是避免给抓取数据的网站造成网络问题,控制一下请求频率
1 | php复制代码public static function crawlContent($url, $encode = true) |
封装的 curl
工具
1 | php复制代码public static function curl($url , $configs = array()) |
解析dom树示例代码
上面的工具类代码我们获得了目标网页的数据
通过 str_get_html
函数获得字符串
再按照 simple_html_dom
获得元素的方式获得对应的值就可以了了
比如:
1 | php复制代码 |
更多取值方法可以查看官方文档,非常的简单好用,这里就不再这里赘述了。
我的示例代码
下面是我的示例代码,整理了一些爬取数据时需要注意的问题:
- 如果涉及抓取图片的话,最好把图片上传到自己的云存储
- 合理的控制爬取频率(已封装到工具类中)
- 合理的使用代理(已封装到工具类中)
1 | php复制代码<?php |
总结和注意
以上就是PHP爬取数据的思路总结啦~
注意:在未经授权的情况下爬取数据是违法的!
本文仅是提供爬取数据的PHP实现思路而已,网络世界不是法外之地,谨慎使用爬取技术哦~
大家有什么好想法欢迎在评论区讨论
硬核文章推荐
如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了。
Git使用实战:多人协同开发,紧急修复线上bug的Git操作指南。
最后
👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!
本文转载自: 掘金