php curl抓取网页指定内容(一下file_get_contents函数可以获取远程链接数据的方法)
优采云 发布时间: 2021-09-13 09:01php curl抓取网页指定内容(一下file_get_contents函数可以获取远程链接数据的方法)
对于做过数据采集的人来说,cURL肯定会很熟悉。 PHP中虽然有file_get_contents函数可以获取远程链接数据,但是可控性太差。对于各种复杂情况采集场景,file_get_contents 显得有些力不从心。因此,本文将向您介绍采集神器cURL。
首先添加file_get_contents函数获取远程链接数据的方法。
这段代码会直接使用curl来显示文件内容,但是问题来了,因为curl是PHP的一个扩展,有些主机为了安全会使用curl,在本地调试的时候curl也是关闭的宁外PHP,所以会出现错误,所以这段代码不可取,所以云落给他重写了
修改后的版本是对curl扩展做一个判断,看curl扩展是否在服务器上打开。如果打开,则直接显示文件,如果未打开,则显示提示文本。
虽然问题已解决,但还有一个问题。我只显示一段文字。我不做大事,为什么要写这么多代码? ?
经过一些傻测试,我发现file_get_contents获取远程文件内容的速度并不比curl慢,而且在一些文件较少的情况下可能比curl扩展快很多,所以我又重新写了一遍代码
工具
火狐 + 萤火虫
“工人要想做好自己的工作,就必须磨砺他们的工具。”在分析案例之前,让我们学习一下如何使用神器Firebug来获取我们需要的信息。
使用F12打开Firebug,我们可以得到图片(一)interface:
1、箭头图标是“元素选择”工具。单击一次以突出显示该图标。同时,鼠标在页面内的移动会同时选中HTML菜单中的相应内容。此时点击内容表示该元素被选中,图标高亮取消。如图(二):
萤火虫视图元素
2、控制面板
这里输出的是JS中console.log系列函数的打印
3、HTML
HTML 内容,注意这里看到的不一定是采集 想要解析的。 采集分析内容的时候,总是以查看源码(Ctrl+U)为标准,这里只列出可以快速定位的元素结构,然后选择一个比较特殊的引用,在源码中定位到对应的位置.
例如,如果您在 HTML 中看到一个标签
演示
,但是你查看源代码看到的可能是
演示
如果使用前者对采集内容进行正则匹配,则不会得到任何结果。
4、CSS
这里是CSS文件的内容
5、Script
这里是Javascript文件的内容
6、DOM
Dom 节点内容
7、网络
每个请求链接的数据,这里是我们采集要重点分析的。它可以显示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求的内容保留在控制台中,如图(三):
此外,Firefox 还有一个 Tamper 数据扩展,也可以获取请求数据,需要时可以安装使用。
8、Cookies
Cookie 数据
图中(一),你也可以看到下面有很多可选的小菜单项,其中keep是我们要注意的。选择时,即使页面被刷新提交表单,下方内容区的数据仍会保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集请求的时候,主要关心的是“Network”菜单中的请求数据。如有必要,使用“Keep”查看刷新页面的请求数据。您可以在请求前使用“清除”清除以下内容。 .
案例分析
一、简的采集
这里简单的采集指的是采集单页GET请求。如此简单,即使通过file_get_contents函数也能轻松获取页面返回结果。
File_get_contents 代码片段
<p>