了解如何从头开始使用 PHP 轻松创建和编写您自己的简单网络抓取工具。

PHP(HyPertext PreProcessor超文本预处理器)是一种用于网络开发的脚本语言,可用于收集网络数据。在这篇文章中,我们将介绍:

  • 为什么使用PHP

  • 开始使用 PHP

  • 通过 3 个简单的步骤使用 PHP 进行网页抓取

为什么使用PHP

PHP 目前支持约 40% 的网络,包括 WordPress 和 Slack 等网站。在 Web 开发方面,它是更流行的服务器端脚本语言之一。对于那些使用 MySQL 的人来说,他们的数据库是密切相关的。它是一种相对容易学习的语言,具有良好的文档和库,可以减少开发时间。

开始使用 PHP

本指南将介绍一种手动网络抓取的方法,您可以将机器人发送到网络服务器并使用 PHP 作为基础编程语言收集数据。这与使用可以简化流程的 全自动数据收集工具相反。

网络抓取工具将通过向服务器发送 HTTP 请求然后收集网站代码来发挥作用。然后,我们将教您如何解析检索到的信息。

以下是可能出现在您希望抓取的网站标题中的代码片段示例:

<html><body><h1>This is a heading!</h1></body></html>

一旦检索到此代码,就需要对其进行解析,以便分析人员可以阅读和理解文本。在此示例中,解析后,您将得到以下纯文本:

‘This is a heading!’

开始之前,请确保您的计算机上安装了PHP。

通过 3 个简单的步骤使用 PHP 进行网页抓取

第一步:收集目标网站的代码


首先输入以下代码:

<?php
$code = file_get_contents (“http://quotes.toscrape.com”);
?>

在编码约定方面:

  • “<?php”和“?>”用于所有 PHP 文档中命令的开头和结尾。

  • 第二行设置一个名为“$code”的变量,它与相关 URL 的内容有关,在本例中,我们将定位:“http://quotes.toscrape.com”。 这将有助于URL 代码存储在“$code”变量中。

更喜欢全自动网络抓取解决方案?立即获取免费演示

第二步:解析网页

这项工作旨在收集来自该网站的所有报价:

报价网站上的报价文本

右键单击目标页面并单击“查看页面源代码”,将打开一个包含源代码的新窗口。在我们的示例中,您会注意到所有引号都包含在 <span> 标记中,并且带有 itemprop 属性的“text”类也设置为“text”,如下所示:

引用代码示例

我们将首先利用 PHP 去除代码中所有不需要的文本,<span> 标记中出现的引号除外,然后使用“echo”功能将其显示在我们的屏幕上:

<?php
$code = file_get_contents("http://quotes.toscrape.com");
$code = str_replace(">", "<>", $code);$splitCode = explode("<", $code);// Find the first occurance of the opening tag of the quotes:
$openingTag = array_search('span class="text" itemprop="text"', $splitCode, true);// Find the first occurance of the closing tag of the quotes
$closingTag = array_search('/span', $splitCode, true);// Now, find the text in between the tags
$i = $openingTag;
$total = "";
while ($i < $closingTag) {$total = $total . $splitCode[$i];$i = $i + 1;
}
$final = substr($total, 37);
echo $final;
?>

在第 2 行,它将代码中所有出现的“>”替换为“<>”。这样它就可以在第 5 行中与“<”一起拆分。现在,它具有代码中所有标签的数组。在第 8 行,我们的程序找到开始 <span> 标记的位置,并在第 11 行找到 </span> 结束标记的位置。

现在需要做的就是检索这两次事件之间的文本。它通过创建一个名为“i”的变量来实现这一点,该变量的值是开始标记变量的位置。然后它创建一个变量,以便稍后将结果输入。在第 16 行,它开始遍历开始标记后的每个字母,将字母添加到总值,然后增加变量“i”。一旦它通过了结束标签,循环就会停止。

接下来,它会删除最终字符串的前 37 位数字,因为前 37 位数字是我们正在解析的标记中的数字——<span> 标记。最后,它使用“回声函数”检索最终结果。

运行该程序后,它将看起来像这样:

“The world we have created it is a process of our thinking. It cannot be changed without changing our thinking.”

这是我们在没有任何“非人类友好”代码的情况下抓取的网站上显示的第一条引述。

第三步:循环

您可能已经注意到,它只收集第一次出现的情况,之后就没有了。为了解决这个问题,我们可以简单地删除我们刚刚返回的事件,然后重复这个过程,直到我们检索到它们。此外,我们可以通过将抓取过程放入一个函数中来简化我们的代码,以便它可以在我们需要的时候运行。尝试使用此代码:

<?php
$code = file_get_contents("http://quotes.toscrape.com");
$code = str_replace(">", "<>", $code);$splitCode = explode("<", $code);functionparseCode($splitCode) {// Find the first occurance of the opening tag of the quotes:$openingTag = array_search('span class="text" itemprop="text"', $splitCode, true);// Find the first occurance of the closing tag of the quotes:$GLOBALS[closingTag] = array_search('/span', $splitCode, true);// Now, find the text in between the tags
$i = $openingTag;
$total = "";
while ($i < $GLOBALS["closingTag"]) {$total = $total . $splitCode[$i];$i = $i + 1;
}
// Run the function, then update splitCode to delete the previous occurance// that it can be repeated for the next quote, then loop through 3 times// (You can change how many times):parseCode($splitCode);
$splitCode = array_slice($splitCode, $GLOBALS["closingTag"]-1, NULL, TRUE);
parseCode($splitCode);
$splitCode = array_slice($splitCode, $GLOBALS["closingTag"]-1, NULL, TRUE);
parseCode($splitCode);
$splitCode = array_slice($splitCode, $GLOBALS["closingTag"]-1, NULL, TRUE);
parseCode($splitCode);?>

您可能已经注意到,我们之前的代码已被输入到名为“parseCode”的函数中,其中包含一个名为“$splitCode”的参数,以便它可以访问代码,然后“回显”结果。'parseCode' 函数在第 27 行运行,然后在第 28 行,我们的程序删除了之前出现的结束标记,以便可以复制它。第 27 行和第 28 行只是简单地重复了大约3 次,以便程序可以识别一种模式并发现下一次出现的情况。

最后,我们将结束标记作为一个具有“$GLOBALS”超全局范围的“全局变量”输入,在第 21 行,我们在它返回的每一行周围输入 <p> 标记,这样它将为每个新的新行创建一个新行引用它解析的。这是结果:

“The world we have created it is a process of our thinking. It cannot be changed without changing our thinking.”“There are only two ways to live your life. One is as though nothing is a miracle. TheOther is as though everything is a miracle.”“Try not to become a man of success. Rather become a man of value.”

结果正是我们想要的。没有代码,只有可读的文本。几乎任何目标站点都可以复制此过程,例如从 eBay 中抓取目标数据点,比如产品定价、评论和 SKU(库存单位)。

总结

使用 PHP 在网络上抓取目标数据可能是一个有效的过程,尽管速度较慢/手动过程。公司可能想要考虑的一种可行替代方案是简单地购买现成的数据集。这可以节省时间和资源,使您和您的团队可以将所有注意力转移到扩展业务、确保客户满意度以及专注于核心产品开发上。

详细步骤教学:使用PHP进行网页抓取相关推荐

  1. 代理服务器ip地址如何获得_详细教程:如何使用代理服务器进行网页抓取?

    全文共2136字,预计学习时长7分钟 图源:Unsplash 万维网是数据的宝库.大数据的易得性.数据分析软件的迅猛发展以及日益廉价的计算能力进一步提高了数据驱动战略对竞争差异化的重要性. 据Forr ...

  2. ​详细教程:如何使用代理服务器进行网页抓取?

    全文共2136字,预计学习时长7分钟 图源:Unsplash 万维网是数据的宝库.大数据的易得性.数据分析软件的迅猛发展以及日益廉价的计算能力进一步提高了数据驱动战略对竞争差异化的重要性. 据Forr ...

  3. WebSpider蓝蜘蛛网页抓取工具5.1用户手册

    概述 关于网页抓取工具 本工具可以抓取互联网上的任何网页,包括需要登录后才能访问的页面.对抓取到页面内容进行解析,得到结构化的信息,比如:新闻标题.作者.来源.正文等.支持列表页的自动翻页抓取,支持正 ...

  4. 您遇到过网页抓取时被封IP的情况吗?

    ​网站如何检测网络爬虫? 网络爬取和网络抓取相辅相成,对于公共数据收集来说至关重要.电子商务企业会使用网络抓取工具从各个网站收集新数据.然后,将抓取到的信息用于改进业务和营销策略. 对于那些不知道如何 ...

  5. 网页抓取神器hawk使用心得

    (1)抓取目的 现在网站有大量数据,但网站本身并不提供api接口,如果要批量获得这些页面数据,必须通过网页抓取方式实现. 比如某房产网站的二手房数据,在页面上很整齐的展示,因此可以通过分析网页的htm ...

  6. r语言抓取网页数据_使用R进行网页抓取的简介

    r语言抓取网页数据 by Hiren Patel 希伦·帕特尔(Hiren Patel) 使用R进行网页抓取的简介 (An introduction to web scraping using R) ...

  7. html抓取文章,网页抓取工具:一个简单的文章采集示例

    通过采集网页抓取工具火车采集器官网的faq为例来说明采集器采集的原理和过程. 本例以 http://faq.locoy.com/qc-12.html 演示地址,以火车采集器V9为工具进行示例说明. ( ...

  8. 一段使用cURL实现的网页抓取源码,支持POST,Cookies,代理,自定义头.

    为什么80%的码农都做不了架构师?>>>    <?php /*** 名称:cURL网页抓取* 版本:v0.3* 作者:吣碎De人(http://www.qs5.org)* 最 ...

  9. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

最新文章

  1. 8. python list 和 tuple
  2. 同网段不同网段主机间通信原理
  3. Golang之var、new与make、简短声明
  4. 深度探索推荐系统算法在工业界如何应用
  5. 学生信息管理系统问题集锦(三)
  6. Spark session 深入理解
  7. Gson解析数组和list容器
  8. 智能穿戴设备进入主动健康管理赛道
  9. es6兼容性问题解决
  10. 适合计算机的音乐,好听的适合做电脑开机音乐的歌
  11. 英文破折号(em dash)、连接号(en dash)与连字符(hyphen)的区别及各自用法是什么?...
  12. 红孩儿编辑器的输入法模块的函数依赖关系图
  13. 外卖联盟高级接口 - 美团联盟接口 美团外卖CPS+CPA推广活动推广API接口
  14. 2022年机修钳工(中级)考试题库及模拟考试
  15. 对webkit-font-smoothing和-moz-osx-font-smoothing的理解
  16. 集合及集合的交,并与差
  17. 玩转百度即用API(5)——空气质量指数查询
  18. 好雨知时节 不甚欢喜
  19. AMD5600G LOL卡顿
  20. FA-关于固定资产的报废处理

热门文章

  1. 图论代码大全(C++)
  2. 四舍六入五成双(百度百科)
  3. 七牛直播demo链接
  4. 性感帝国 私有云 php,基于Ubuntu+kodexplorer可道云的私有云网盘
  5. PDF阅读器怎么编辑文件?快来学习一下这个方法
  6. 解决Windows 10 ‘.\wsvd.mexw64‘ 无效: 找不到指定的模块问题
  7. 在MATLAB绘图中添加数学公式
  8. [附源码]计算机毕业设计Python+uniapp基于android的古诗词鉴赏设计与实现lt9y0(程序+源码+LW+远程部署)
  9. 详解python内置函数的使用
  10. VueRouter官方文档学习笔记