php小红书,【小红书逻辑PHP面试题】面试问题:PHP小红书文… - 看准网

本文详细介绍了如何使用正则表达式和PHP实现一个简单的网页爬虫,从目标URL中提取文章内容、图片,并进行处理。内容包括:匹配文章主要段落、下载并替换图片为OSS上的路径、获取文章标题以及处理缩略图。该爬虫逻辑适用于从特定网站抓取结构化的信息。
摘要由CSDN通过智能技术生成

/**

* 爬虫逻辑

* 获取html内容

*/

public function crawler($centent_url)

{

//https://www.xiaohongshu.com/discovery/item/5a4ca319a7c9b8481ea24c7e?_at=36df0d880cae739ee71e7e94174a6d7c70351

//接收内容源地址

$request = $centent_url;

$html = $this->getUrlContent($request);

// print_r($html);exit;

$relwvantart = array();

//获取div随机码

preg_match_all("/class=\"content\" data-v-(.*)>/iUs",$html,$temp_variable,PREG_PATTERN_ORDER);

$variable = $temp_variable[1][0];

// $variableimg = $temp_variable[1][1];

// print_r($variableimg);exit;

//获取文章主要内容

preg_match_all("/class=\"content\" data-v-".$variable.">(.*)

// $temp_content = $content[1][0];

$temp_content = "

".$content[1][0]."
";

// print_r($temp_content);exit;

//获取文章内容里的图片编号

preg_match_all("/class=\"cell image-cell\" data-v-(.*) data-v-".$variable.">/iUs",$html,$temp_variable_img,PREG_PATTERN_ORDER);

$temp_contentimg = $temp_variable_img[1][0];

// print_r($temp_contentimg);exit;

//内容里的图片处理

preg_match_all("/img src=\"(.*)\" data-v-".$temp_contentimg.">/iUs",$temp_content,$temp_img,PREG_PATTERN_ORDER);

$temp_img = $temp_img[1];

// print_r($temp_img);exit;

if(!empty($temp_img)){

//处理图片路径

//图片下载到本地,获取返回的图片路径

$temp_content_img = array();

foreach ($temp_img as $k => $v){

$temp_v = str_replace('//','https://',$v);

$res = $this->crabcontentImg($temp_v);

$temp_content_img[$k] = $res['save_path'];

}

//将内容里的图片路径替换成oss上的图片路径

foreach ($temp_content_img as $key => $value){

$temp_content = str_replace($temp_img[$key],$value,$temp_content);

}

//获取缩略图板块内容

preg_match_all("/

%5C%22(.*)%5C%22/iUs",$html,$temp,PREG_PATTERN_ORDER);

$img_url = $temp[1][0];

$img_url = str_replace('//','https://',$img_url);

$res = $this->crabImage($img_url);

$imgurl = $res['save_path'];

// print_r($imgurl);exit;

$relwvantart['img'] = $imgurl;

}

// print_r($content);

// print_r(base64_encode($content));exit;

$relwvantart['content'] = base64_encode($temp_content);

//获取文章标题

preg_match_all("/

(.*)/iUs",$html,$title,PREG_PATTERN_ORDER);

$title = $title[1][0];

$relwvantart['title'] = $title;

if (empty($title)){

//获取meta里的description当标题

preg_match_all("//iUs",$html,$desc,PREG_PATTERN_ORDER);

$desc = $desc[1][0];

$relwvantart['title'] = $desc;

}

//获取缩略图板块内容

preg_match_all("//iUs",$html,$temp,PREG_PATTERN_ORDER);

$tempicon = $temp[1];

// print_r($tempicon);exit;

$img_url = array();

//图片路径处理

foreach ($tempicon as $k => $v){

$img_url[$k] = str_replace('(','https:',$v);

}

foreach($img_url as $key => $value){

$img_url[$key] = str_replace(')','',$value);

}

//将图片保存在本地并上传oss

foreach ($img_url as $i => $j){

$res = $this->crabImage($j);

// print_r($res);exit;

$imgurl[$i] = $res['save_path'];

}

// print_r($res);

$relwvantart['img'] = $imgurl;

return $relwvantart;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值