完整的采集神器(先给file_get_contents函数可以获取远程链接数据的方法)
优采云 发布时间: 2022-02-18 05:23完整的采集神器(先给file_get_contents函数可以获取远程链接数据的方法)
做过data采集的朋友,curl一定不会陌生。虽然php中有file_get_contents函数可以获取远程链接的数据,但是可控性太差。对于各种复杂的情况采集,file_get_contents 显得有些力不从心。因此,本文将向您介绍采集神器curl的使用。
我先给大家补充一下file_get_contents函数是如何获取远程链接数据的。
这段代码会直接使用curl来显示文件内容,但是问题来了,因为curl是php的扩展,有些主机为了安全会金庸curl,而宁外php在本地调试的时候也会关闭curl,所以会报错发生。所以这段代码不可取,所以云洛给他重写了
修改后的版本是对curl扩展做判断,看服务器是否开启了curl扩展。如果打开则直接显示该文件,如果未打开则显示提示文字。
虽然问题已经解决,但还有另一个问题。我只是显示一段文字,并没有用任何东西来做大事,那我为什么要写这么多代码呢??
经过一番废话测试,发现file_get_contents获取远程文件内容并不比curl慢,而且在某些文件较少的情况下可能比curl扩展快很多,于是我又重写了代码
工具
火狐+萤火虫
“要想把工作做好,就必须先利好自己的工具。” 在分析案例之前,让我们学习一下如何使用神器firebug来获取我们需要的信息。
使用f12打开firebug,我们可以得到如图所示的界面(一):
1、箭头图标是“元素选择”工具。单击一次将突出显示该图标。同时,鼠标在页面中的移动会同时选中html菜单中的相应内容。当元素被设置时,图标高亮被取消。如图(二):
萤火虫视图元素
2、控制台
js中console.log系列函数的打印输出到这里。
3、html
html内容,注意这里看到的不一定是采集要解析的内容。采集 的时候对内容的分析总是基于查看源码(ctrl+u),也就是快速定位元素。结构,然后选择一个特殊的引用来定位源代码中的对应位置。
例如,您在 html 中看到一个标签,即
演示
, 但是你看源码时看到的可能是
演示
,如果按照前者对采集的内容进行正则匹配,则不会得到结果。
4、css
这是css文件内容
5、脚本
这是javascript文件内容
6、dom
dom节点内容
7、网络
每个请求链接的数据,这里是我们采集要重点分析的地方,它可以展示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求内容就保留在控制台中,如图(三):
此外,火狐还有一个篡改数据扩展,同样可以获取请求数据,必要时可以安装使用。
8、cookies
饼干数据
在图中(一),我们也看到下面有很多可选的小菜单项,其中keep是我们要注意的。当它被选中时,即使提交了表单并且页面是刷新后,下方内容区的数据依然会被保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集的请求时,主要关心的是“网络”菜单中的请求数据。如有必要,使用“保持”查看刷新页面的请求数据。在发出请求之前,您可以使用“清除”清除以下内容。
案例分析
一、简单采集
这里所说的简单采集是指单个页面get请求的采集,简单到即使通过file_get_contents函数也可以轻松获取页面返回结果。
代码片段 file_get_contents
<p>