php使用curl和正则表达式抓取网页数据示例

yizhihongxing

下面是“php使用curl和正则表达式抓取网页数据示例”的完整攻略:

一、curl的基本用法

curl是一个非常常用的工具,它可以通过网络协议,向网络服务器发送请求,从而获取服务器返回的数据。在PHP中,可以使用curl库来发起网络请求,并获取服务器返回的数据。

1.1 基本的curl请求

下面是一个基本的curl请求的代码示例:

$url = 'https://www.baidu.com/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

上面的代码示例中,我们先定义了要请求的网址$url,然后使用curl_init()函数创建了一个curl句柄$ch。接着,我们使用curl_setopt()函数来设置curl的相关选项,如URL和返回值等。最后,我们使用curl_exec()函数来执行curl请求,并使用curl_close()函数来关闭curl句柄。

1.2 可自定义请求头与解析Cookie的基本curl请求

下面是一个可自定义请求头与解析Cookie的基本curl请求代码示例:

$url="https://www.baidu.com/";
$header = array(
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0',
    'Accept-Language: zh-cn,zh;q=0.5',
    'Connection: keep-alive',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //自定义请求头
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); //保存cookie到文件
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); //从文件中读取cookie,实现自动登录
$response = curl_exec($ch);
curl_close($ch);
echo $response;

上面的代码示例中,我们创建了一个自定义请求头的curl请求,并使用了cookie来实现自动登录。

二、正则表达式的基本用法

正则表达式是一种用来匹配字符串的工具,经常用来从网页的代码中筛选出我们所需要的信息。在PHP中,可以使用preg系列函数来匹配正则表达式。

2.1 基本的正则表达式匹配

下面是一个基本的正则表达式匹配的代码示例:

$str = '<strong>PHP学习网站</strong>';
if (preg_match('/<strong>(.*?)<\/strong>/i', $str, $matches)) {
    echo $matches[1];
}

上面的代码示例中,我们通过preg_match()函数,使用正则表达式匹配了$str字符串中的PHP学习网站, 并将匹配结果保存到$matches数组中。

2.2 正则表达式匹配多个结果

下面是一个正则表达式匹配多个结果的代码示例:

$str = '<a href="https://www.baidu.com">百度</a><a href="https://www.sina.com">新浪</a><a href="https://www.qq.com">腾讯</a>';
if (preg_match_all('/<a href="(.*?)">(.*?)<\/a>/i', $str, $matches)) {
    print_r($matches[1]);
    print_r($matches[2]);
}

上面的代码示例中,我们通过preg_match_all()函数,使用正则表达式匹配了$str字符串中的所有超链接,并将匹配结果保存到$matches数组中。

三、使用curl和正则表达式抓取网页数据

综合使用curl和正则表达式的方法,可以通过PHP代码来快捷地抓取网页数据。

下面是一个实战用例,我们将通过PHP代码抓取百度搜索结果页面中的所有标题和URL:

$url = 'https://www.baidu.com/s?wd=php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
if (preg_match_all('/<h3 class="t"><a href="(.*?)" target="_blank">(.*?)<\/a><\/h3>/i', $response, $matches)) {
    foreach ($matches[1] as $key => $value) {
        echo $matches[2][$key] . "\t" . $value . "\n";
    }
}

上面的代码示例中,我们先使用curl库来获取百度搜索结果页面的HTML代码,然后使用正则表达式来匹配标题和URL,并将结果输出到屏幕上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php使用curl和正则表达式抓取网页数据示例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • php解决缓存击穿的问题

    缓存击穿是指缓存中没有的数据,而查询非常频繁的数据,导致大量的请求落到了数据库上,因此很容易导致数据库连接数暴增,甚至导致宕机。 下面是 PHP 解决缓存击穿问题的一般解决方案: // 获取 Key $key = ‘my_key’; // 根据 Key 从 Redis 中获取数据 $data = $redis->get($key); // 如果数据不存…

    PHP 2023年4月17日
    00
  • PHP简单获取随机数的常用方法小结

    以下是“PHP简单获取随机数的常用方法小结”的完整攻略: 1. 使用 rand 函数 使用 PHP 内置的 rand 函数可以快速获取随机数。这个函数接受两个参数,分别是所需要的随机数的最小值和最大值。函数将返回一个在这个范围内的随机整数。 下面是一个例子,获取一个 1 到 100 之间的随机整数: $randomNum = rand(1, 100); ec…

    PHP 2023年5月26日
    00
  • php array_pop 删除数组最后一个元素实例

    当我们需要从数组的末尾删除一个元素时,可以使用php的array_pop函数。下面是详细的操作步骤: 函数介绍 array_pop array_pop() 函数删除并返回数组的最后一个值。 语法 array_pop(array) 参数 array:必需。规定要使用的数组。 返回值 成功返回数组的最后一个值,否则返回 NULL。 示例 示例一 $fruits …

    PHP 2023年5月26日
    00
  • 微信小程序与后台PHP交互的方法实例分析

    下面是关于“微信小程序与后台PHP交互的方法实例分析”的一些具体步骤和示例说明。 一、准备工作 在进行微信小程序与后台PHP交互之前,需要先进行一些准备工作。 准备好微信开发者工具,并创建一个小程序项目。 创建后台PHP程序,可以使用Laravel、CodeIgniter、Yii等常用框架进行开发,或者直接使用PHP语言开发。 在后台PHP程序中编写响应微信…

    PHP 2023年5月23日
    00
  • PHP 序列化和反序列化函数实例详解

    PHP 序列化和反序列化函数实例详解 什么是 PHP 序列化和反序列化 PHP 序列化指将 PHP 对象(数组、类实例等)转化为字符串的过程,进行序列化后我们就可以将其存储或者传输到其他 PHP 程序中进行反序列化。PHP 反序列化则是将序列化后的字符串还原为 PHP 对象。在序列化与反序列化的过程中,我们可以采用 serialize() 和 unseria…

    PHP 2023年5月26日
    00
  • PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题

    获取网页标题是很常见的需求,这里分别介绍基于PHP CURL和file_get_contents两种方式的代码实现以及两种方式的效率和稳定性问题。 1. 基于PHP CURL获取网页标题的代码实现 PHP CURL(Client URL)是PHP中处理URL请求的函数库,可以模拟客户端访问其他URL并获取响应数据。以下是获取网页标题的PHP CURL代码实现…

    PHP 2023年5月27日
    00
  • php实现文件下载(支持中文文名)

    下面是我给出的完整攻略。 1. 背景介绍 PHP 是一种服务器端脚本语言,能够创建动态网页。在 web 开发中,有时候需要用户能够下载数据文件,可以通过 PHP 程序实现文件下载。但是在中文文名的文件下载中,需要解决一些编码和文件名乱码的问题。 2. 实现过程 文件下载的基本原理是,准备好文件,将文件内容输出到浏览器的 Response 内容中,并且设置正确…

    PHP 2023年5月23日
    00
  • php将字符串随机分割成不同长度数组的方法

    下面是一个将字符串随机分割成不同长度数组的PHP方法。 1. 基本思路 我们可以将字符串分割成指定长度的小块,然后再根据需要将这些小块随机排列,最终得到一个随机分割后的数组。 2. 代码实现 可以通过PHP函数“array_slice”和 “shuffle”实现以上思路的代码实现: function splitString($string, $length)…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部