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

下面是“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日

相关文章

  • ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解

    下面是关于“ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解”的完整攻略: 什么是扫码支付模式二 扫码支付模式二是微信支付的一种支付方式,由商户生成支付二维码,用户用微信扫描二维码后完成支付。 ThinkPHP框架整合微信支付之Native 扫码支付模式二 第一步:安装微信支付SDK composer require "the…

    PHP 2023年5月23日
    00
  • 实例讲解php将字符串输出到HTML

    以下是“实例讲解PHP将字符串输出到HTML”的完整攻略: 基本概念 在PHP中,我们可以使用echo、print和printf等方法来将字符串输出到HTML页面中。其中echo是最常用的一种方法。 echo方法 echo方法可以输出一个或多个字符串,其语法为: echo string1, string2, string3, … 在调用时,可以将多个字符…

    PHP 2023年5月26日
    00
  • PHP字符串中特殊符号的过滤方法介绍

    一、PHP字符串中特殊符号的过滤方法介绍 在PHP字符串的处理中,常常需要对字符串中的特殊符号进行过滤和处理,防止出现安全隐患和功能错误。本文将详细介绍PHP字符串中特殊符号的过滤方法。 二、HTML标签和JavaScript脚本注入漏洞 在PHP应用开发中,常常会有用户输入的情况,比如表单提交、评论或留言等。这就可能导致HTML标签和JavaScript脚…

    PHP 2023年5月26日
    00
  • PHP 读取文件内容代码(txt,js等)

    下面是关于PHP读取文件内容的攻略: 准备工作 在开始读取文件之前,需要准备好要读取的文件,确保文件可读可写,以及被PHP所认可。一般来说,我们使用fopen()函数打开文件,代码如下: $file = fopen("file.txt", "r"); 上述代码实现了以只读方式打开名为“file.txt”的文件,若要进行…

    PHP 2023年5月26日
    00
  • php生成0~1随机小数的方法(必看)

    PHP生成0~1随机小数的方法 在PHP中,生成0到1之间的随机小数可以使用rand()和mt_rand()函数。这两个函数可以返回一个介于0到PHP_INT_MAX之间的随机整数,因此可以将其除以PHP_INT_MAX,得到一个由0到1之间的随机小数。 使用rand()函数 $rand_num = rand(0, PHP_INT_MAX); $random…

    PHP 2023年5月26日
    00
  • php读取本地文件常用函数(fopen与file_get_contents)

    当我们需要在PHP中读取本地文件时,我们通常会使用两种不同的函数:fopen和file_get_contents。 fopen fopen函数用于打开一个文件,并返回其指针。我们可以使用这个指针来读取文件的内容,或者将内容写入文件中。以下是使用fopen函数读取本地文件的基本步骤: 打开文件:使用fopen函数打开文件,需要提供文件路径和打开方式(读、写、追…

    PHP 2023年5月26日
    00
  • PHP取整数函数常用的四种方法小结

    PHP取整数函数常用的四种方法小结 在PHP中,常用的四种取整函数有:ceil()、floor()、round()和intval()。下面将分别介绍这四种函数的用法以及示例说明。 ceil() ceil()函数把小数向上取整,返回大于等于给定参数的最小整数。该函数的语法如下: ceil(float $number) : int 示例: $number = 3…

    PHP 2023年5月26日
    00
  • PHP执行linux命令常用函数汇总

    下面我会详细讲解“PHP执行Linux命令常用函数汇总”的完整攻略。 一、背景介绍 在实际开发中,我们经常需要用到PHP执行Linux命令的功能。这项功能可以帮助我们完成一些自动化脚本、文件处理、服务器管理等任务。那么,在PHP中如何执行Linux命令呢?接下来将为您提供详细的攻略。 二、系统函数exec PHP中最常用的执行Linux命令的函数是exec,…

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