全方面的采集神器(先给file_get_contents函数可以获取远程链接数据的方法)
优采云 发布时间: 2021-10-28 07:10全方面的采集神器(先给file_get_contents函数可以获取远程链接数据的方法)
对于做过数据采集的人来说,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扩展快得多,所以我重新编写了代码。
工具
火狐 + 萤火虫
“工人们要想做得好,就必须磨砺他们的工具。” 在分析案例之前,让我们学习如何使用神器萤火虫来获取我们需要的信息。
使用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,这样刷新后页面请求的内容会保留在控制台中,如图(三):
此外,Firefox 有一个篡改数据扩展,也可以获取请求数据,必要时可以安装和使用。
8、饼干
饼干数据
图片中(一),你也可以看到下面有很多可选的小菜单项,其中保留是我们要注意的。选择时,即使提交表单后刷新页面,下面内容区的数据仍会保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集请求时,主要关心的是“Network”菜单中的请求数据。必要时,使用“Keep”查看刷新页面的请求数据。您可以在请求前使用“清除”清除以下内容。
案例分析
一、简单采集
这里所说的简单采集指的是单页get请求的采集。如此简单,即使通过file_get_contents函数,也可以轻松获取页面返回结果。
代码片段 file_get_contents
<p>