下面会详细讲解微信小程序调用PHP后台接口解析纯html文本的完整攻略。
我们可以在后台编写一个PHP接口,接受小程序端的请求,使用curl模拟请求目标网站的响应,然后解析目标网站返回的HTML内容,筛选出需要的信息,最后将筛选出来的信息返回给小程序端。
下面是一个简单的示例代码:
<?php
//获取小程序端传来的url参数
$url = $_GET['url'];
//使用curl模拟请求目标网站的响应
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
//解析目标网站返回的HTML内容,筛选出需要的信息
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$result = $xpath->query('//div[@class="content"]/p');
$data = array();
if ($result->length > 0) {
foreach ($result as $item) {
$data[] = $item->nodeValue;
}
}
//将筛选出来的信息返回给小程序端
header('Access-Control-Allow-Origin: *');
echo json_encode($data);
?>
在上面的示例代码中,我们使用了curl
模拟请求目标网站的响应,然后使用了DOMDocument
和DOMXPath
解析HTML内容,最后使用了json_encode
将筛选出来的信息格式化成json字符串,并将其返回给小程序端。
在小程序端中,我们可以使用wx.request
API发起HTTP请求,调用我们在后台编写的PHP接口。
下面是一个简单的示例代码:
wx.request({
url: 'http://yourdomain.com/api.php?url=http://targetsite.com',
success: function (res) {
console.log(res.data);
}
});
在上面的示例代码中,我们使用wx.request
发起了一个请求,指定了后台PHP接口的URL地址,并将目标网站URL作为参数传递给后台接口。
当后台接口收到请求后,会使用curl模拟请求目标网站的响应,然后解析HTML内容,筛选出需要的信息,最后将筛选出来的信息返回给小程序端。在小程序端收到后台返回的信息后,我们可以使用console.log
打印出来。
下面我们以爬取百度百科中的Python词条为例,来进行说明。
首先,在百度百科中搜索Python,并进入Python词条的页面。我们可以发现,Python词条的URL地址是:
https://baike.baidu.com/item/Python/407313
接下来,我们可以在后台编写一个PHP接口,用于接受小程序端的请求,并将请求转发给百度百科,然后解析百度百科返回的HTML内容,筛选出需要的信息。
在这个示例中,我们需要获取Python词条的基本信息和词条简介,如果我们观察Python词条页面的HTML内容,可以发现Python词条的基本信息和词条简介都包含在一个div
元素中,div
元素的class
属性值为lemma-summary
。
因此,我们可以使用以下的PHP代码从HTML内容中筛选出Python词条的基本信息和词条简介:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$title = $xpath->query('//dd[@class="lemmaWgt-lemmaTitle-title"]/h1')->item(0)->nodeValue;
$summary = $xpath->query('//div[@class="lemma-summary"]')->item(0)->nodeValue;
在上面的PHP代码中,我们使用了DOMXPath
查询所有class属性值为lemma-summary
的div
元素,并获取其文本内容。
最后,我们可以将筛选出来的信息作为JSON字符串返回给小程序端,小程序端可以使用wxparse
组件来解析HTML内容,将其渲染成小程序端可识别的界面。
假设我们需要从Python词条页面中抓取所有正文段落的内容,可以使用以下的PHP代码:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$result = $xpath->query('//div[@class="para"]');
$data = array();
if ($result->length > 0) {
foreach ($result as $item) {
$data[] = $item->nodeValue;
}
}
header('Access-Control-Allow-Origin: *');
echo json_encode($data);
在上面的PHP代码中,我们使用了DOMXPath
查询所有class属性值为para
的div
元素,并获取其文本内容。然后将筛选出来的信息作为JSON字符串返回给小程序端,小程序端可以使用wxparse
组件来解析HTML内容,将其渲染成小程序端可识别的界面。
综上所述,以上就是微信小程序调用PHP后台接口解析纯html文本的完整攻略,包含了编写后台PHP接口和小程序端请求的示例说明。