• 全都有综合资源网

    分享赚钱

    一个专业的免费资源网

    每天更新100+优质资源

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方微信群

从零开始使用 PHP 来抓取需要的数据

技术文章 每日更新
2024-6-11 19:38 90人浏览 0人回复
原作者: 全都有综合资源网 来自: 全都有综合资源网 收藏 分享 邀请
摘要

今天通过两个具体的示例教您从头开始使用 PHP 来捕获所需的数据。 准备工作 首先你需要准备一个Html编辑器(比如notepad++)和一个支持PHP的网站空间。 创建一个名为 GET.PHP.PHP 的新 PHP 文件第一行代码打开 get.php ...

 

从零起头利用 PHP 来抓取需要的数据1977 作者:全都有综合资本网 来历:全都有综合资本网 公布时候:2024-6-11 19:38


明天经过两个具体的示例教您重新起头利用 PHP 来捕捉所需的数据。
预备工作
首先你需要预备一个HTML编辑器(比如notepad++)和一个支持PHP的网站空间。
建立一个名为 GET.PHP.PHP 的新 PHP 文件
第一行代码

翻开 get.php ,在里面输入

layui-box layui-code-view" style="margin-top: 10px; margin-bottom: 10px; padding: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); white-space: pre-wrap; overflow-wrap: break-word; box-sizing: content-box; position: relative; font-size: 12px; border-width: 1px 1px 1px 6px; border-style: solid; border-color: rgb(226, 226, 226); border-image: initial; background-color: rgb(242, 242, 242); color: rgb(51, 51, 51); font-family: "Courier New";">

code

  1. <?php
  2. echo 'hello php';
  3. ?>

保存,然后将这个 PHP 文件上传至你的网站空间,经过阅读器拜候这个 PHP 文件,阅读器输出 “hello php”。恭喜你!已经写下了第一行 PHP 代码!

别看只要小小的三行代码,实在包括了很多常识点!(敲黑板……)

第一行代码的 尖括号+问号+php 是 PHP 说话的起头标志,一切的 PHP 代码都要写在起头标志的前面。

第二行代码是一个输出语句,用 echo 输出一个字符串。字符串用单引号包起来。实在用双引号也是一样的。双引号与单引号的区分是双引号中可以间接放变量。每一句 PHP 代码的结尾都用半角的分号暗示竣事。

第三行的 问号+反尖括号 是 PHP 的竣事标志,用于暗示 PHP 代码到这里就全数竣事了。假如前面没有了别的的 HTML 代码,那末竣事标志可以省略

初试信息抓取

以下内容以抓取 图灵机械人 的 API 接口内容为例:

图灵机械人 供给了一个虚拟聊天机械人数据接口,它的挪用方式以下:

  1. http://www.tuling123.com/openapi/api?key=e825286159f9f57db1b597995d72ae2b&info=你要说的话

我们可以间接在阅读器中拜候这个接口地址。阅读器会显现以下内容:

  1. {"code":100000,"text":"我有话要对谁说呢"}

这类用大括号括起来的数据格式叫 JSON。待会我们再谈若何去剖析 JSON 数据。

现在我们要做的是经过 PHP 来抓取上述接口的内容。

PHP 有一个很方便的文件读取函数:file_get_contents()。我们可以间接用 file_get_contents('要抓取的网址') 来获得指定网址(接口)的内容

代码示例:

code

  1. <?php
  2. $data = file_get_contents('http://www.tuling123.com/openapi/api?key=e825286159f9f57db1b597995d72ae2b&info=你好');
  3. echo $data;
  4. ?>

运转这行代码,阅读器中显现的应当是和间接去拜候原接口地址类似的内容。这就说明我们已经成功地从图灵的接口抓取到了数据。

JSON 数据的剖析

下面,我们需要从原始的 JSON 中剖析出 "text" 这个键值的内容,也就是机械人答复你的内容。

一样的,PHP 也供给了一个很是方便的用于剖析 JSON 的函数:json_decode()。这个函数有两个参数,第一个参数是原始 JSON 数据,第二个参数 assoc 用于指定返回数据的格式,假如为 true 返回数组格式,假如为 false 则返回一个工具。

我们这里将 JSON 剖析成数组来利用。

代码以下:

code

  1. <?php
  2. $data = file_get_contents('http://www.tuling123.com/openapi/api?key=e825286159f9f57db1b597995d72ae2b&info=你好');    // 从图灵的接口获得数据
  3. $arr = json_decode($data, true);    // 将获得到的 JSON 数据剖析成数组
  4. echo $arr['text'];        // 输出数组中的 “text” 值(也就是之前 JSON 中的“text”键值中的内容)
  5. ?>

现在我们去运转代码,阅读器中只会显现机械人答复的内容了,没有了别的的 json 内容。

参数获得

上面的代码中,接口中发送的字符串(也就是我们发给机械人)的笔墨是牢固的,假如要给机械人发分歧的内容,那末只能点窜代码……这样很不方便。

实在,我们可以经过 get 的方式传递给 PHP 一些参数,以此来静态改变内容。

PHP 中可以利用 $_GET() 来获得 get 方式发送的数据。

那末题目来了,什么是 get 发送数据呢?仔细研讨一下图灵的接口,它的数据传递方式是 图灵接口+你要说的话 这类数据传送方式就是 get。你假如间接在阅读器里拜候可以在地址栏看到全数的 get 发送的数据。

加了 get 数据传递后的代码以下:

code

  1. <?php
  2. $get = $_GET['says'];    // 获得 get 数据
  3. $data = file_get_contents('http://www.tuling123.com/openapi/api?key=e825286159f9f57db1b597995d72ae2b&info='.$get);    // 从图灵的接口获得数据
  4. $arr = json_decode($data, true);    // 将获得到的数据剖析成 JSON 格式
  5. echo $arr['text'];        // 输出数组中的 “text” 值(也就是之前 JSON 中的“text”键值中的内容)
  6. ?>

现在,你可以间接跟你的机械人“对话”了。

方式就是拜候

  1. http://你的网址/get.php?says=你想说的话

至此,你已经学会了抓取 Api 接口的内容并剖析 JSON 数据。

可是偶然我们抓取到的数据格式并不是 JSON,那该怎样办呢?且听我渐渐说来……

初识 Curl

上面先容了一个抓取网页数据的 PHP 函数:file_get_contents() ,这个函数利用起来很是简单,但却不是万能的。

下面以 126 的 IP 定位接口为例:

  1. http://ip.ws.126.net/ipquery  

间接拜候这个接口地址,你会发现阅读器返回了你当前的 省份 和 城市 信息。

我们再尝试用 file_get_contents() 来抓取这个接口的内容。

code

  1. <?php  
  2. $data = file_get_contents('http://ip.ws.126.net/ipquery');    // 从接口获得数据  
  3. echo $data;  
  4. ?>
运转这行代码,您会发现阅读器输出的不是您的当地地址,而是办事器的地址。
你用 PHP 从办事器去抓取,接口何处获得到的是你办事器的 IP,然后返回办事器的地址,没毛病!
你能在办事器上捏造一个 IP 地址然后拿到吗?
固然~然后这时就得是 Curl 上场了。Curl有很多参数和复杂的用法。具体可以百度领会一下。我这里间接供给一个打包的函数,可以间接利用。

code

  1. /** 
  2.  * Curl 捏造 IP 并从指定网址获得数据 
  3.  * @param $url 接口地址 
  4.  * @param $ip 捏造的 IP 
  5.  * @return 抓取到的内容 
  6.  */  
  7. function myCurl($url, $ip){   
  8.     $ch = curl_init();     // Curl 初始化  
  9.     $timeout = 30;     // 超不时候:30s  
  10.     $ua='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';    // 捏造抓取 UA  
  11.     curl_setopt($ch, CURLOPT_URL, $url);              // 设备 Curl 方针  
  12.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      // Curl 请求有返回的值  
  13.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);     // 设备抓取超不时候  
  14.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);        // 跟踪重定向  
  15.     curl_setopt($ch, CURLOPT_ENCODING, "");    // 设备编码  
  16.     curl_setopt($ch, CURLOPT_REFERER, $url);   // 捏造来历网址  
  17.     curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$ip, 'CLIENT-IP:'.$ip));  //捏造IP  
  18.     curl_setopt($ch, CURLOPT_USERAGENT, $ua);   // 捏造ua   
  19.     curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); // 取消gzip紧缩  
  20.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不考证证书和hosts  
  21.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);  
  22.     $content = curl_exec($ch);   
  23.     curl_close($ch);    // 竣事 Curl  
  24.     return $content;    // 函数返回内容  
  25. }

有了这个函数你便可以间接经过 myCurl('方针网址', '捏造的IP') 来捏造 IP 并获得数据了。

示例以下:

code

  1. <?php  
  2. $data = myCurl('http://ip.ws.126.net/ipquery', '223.81.141.38');    // 捏造 IP 并获得数据  
  3. echo $data;  
  4.   
  5. /** 
  6.  * Curl 捏造 IP 并从指定网址获得数据 
  7.  * @param $url 接口地址 
  8.  * @param $ip 捏造的 IP 
  9.  * @return 抓取到的内容 
  10.  */  
  11. function myCurl($url, $ip){   
  12.     $ch = curl_init();     // Curl 初始化  
  13.     $timeout = 30;     // 超不时候:30s  
  14.     $ua='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';    // 捏造抓取 UA  
  15.     curl_setopt($ch, CURLOPT_URL, $url);              // 设备 Curl 方针  
  16.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      // Curl 请求有返回的值  
  17.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);     // 设备抓取超不时候  
  18.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);        // 跟踪重定向  
  19.     curl_setopt($ch, CURLOPT_ENCODING, "");    // 设备编码  
  20.     curl_setopt($ch, CURLOPT_REFERER, $url);   // 捏造来历网址  
  21.     curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$ip, 'CLIENT-IP:'.$ip));  //捏造IP  
  22.     curl_setopt($ch, CURLOPT_USERAGENT, $ua);   // 捏造ua   
  23.     curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); // 取消gzip紧缩  
  24.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不考证证书和hosts  
  25.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);  
  26.     $content = curl_exec($ch);   
  27.     curl_close($ch);    // 竣事 Curl  
  28.     return $content;    // 函数返回内容  
  29. }  
  30.   
  31. ?>
经过点窜IP值,可以获得肆意IP对应的地址。爆笑一个IP查询工具诞生了!
固然,你一定留意到了。上面的数据看起来有点使人困惑:
重新起头进修PHP调集
假如我只想获得到企业其中的省份和城市治理信息,该怎样办呢?
正如您所看到的,数据不是 JSON 格式的,是以不能像上面的 JSON 方式那样停止剖析。那我们怎样办?
正则表达式入门
每当你想从一堆混乱的内容中获得内容时,正则表达式就该出现了!
仔细看返回的数据,实在内容除了省市之外,其他内容都是牢固的,格式以下:

var lo="省份", lc="城市";

我们可以以此来编写正则表达式。保举利用 站长工具的正则表达式测试工具(http://tool.chinaz.com/regex/),可以实时测试婚配成果,很方便。没打仗过正则表达式的也可以查阅工具中的正则表达式语法说明来现学。

这是我写好的正则表达式内容。可以完善地婚配出需要的内容

  1. lo="(.*)", lc="(.*)";  

©版权免责声明
1、本站所有资源均来自用户上传及互联网。 如有侵权,请联系站长!
2、分享目的仅供大家学习交流。 下载后必须在24小时内删除!
3、不得用于非法商业目的或违反国家法律。 否则,后果自负!
4、本站提供的源代码、模板、插件等资源不包含技术服务。 敬请谅解!
5.如果出现无法下载、无效或有广告的链接,请联系管理员寻求帮助!
6、本站资源价格仅用于赞助,所收取的费用仅用于维持本站日常运营!
7、如果遇到加密压缩包,请使用WINRAR解压。 如果遇到无法解压的加密压缩包,请联系管理员!
8、由于精力有限,很多源代码无法详细测试(解密),部分源代码无法区分为病毒或误报,所以没有进行修改。 请在使用前进行筛选。

路过

雷人

握手

鲜花

鸡蛋
热门教程
专业的免费源码资源分享平台
每天更新100+资源

招募版主发工资

  • 官方在线客服

    QQ客服:红颜

    点击交谈

    在线客服:良子

    点击交谈

    在线客服:闵月

    点击交谈
  • 上海市虹口区海伦中心B座4F4055-4056室

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信公众号

    加入官方微信

一个专业的免费源码资源互联网分享平台 ©2001-2024 https://www.douyouvip.com全都有综合资源网( 豫ICP备2024057239号-1 )赞助会员|网站地图 HTML
全都有综合资源网,WordPress主题PHP源码,PHP网站源码,网站模板,软件源码,网站源码免费下载,免费网站源码,网站源码模板,免费网站源码下载,wp免费源码,wp免费主题下载,PHP企业网站源码,软件源码下载