PHP正则采集新闻列表和详情 难点两个不知道怎么写

我打算用CURL 在页面1采集新闻标题和完整路径链接
(采集的源代码是相对路径,也就是路径不完整,带上http://www.xx.com/news)(难点1),

同时对页面1的每个新闻标题外部的a标签的链接(页面2)进行二次采集,把页面2源码的新闻内容也采集出来,然后把新闻标题、完整原路径和内容展示到页面上(难点2)

请问这两个难点怎么写?

页面1-列表页源代码(关键部分)

<div class="box list channel max-border list-text-my">
<ul>
    <li><a href="/arthtml/40958.html" title=""><span>[2022-12-13]</span>新闻1</a></li>
    <li><a href="/arthtml/40951.html" title=""><span>[2022-12-13]</span>新闻2</a></li>
    <li><a href="/arthtml/40926.html" title=""><span>[2022-12-13]</span>新闻3</a></li>
</ul>

</div>
页面2-新闻详情页部分源代码(比如打开的是新闻1 http://www.xx.com/news/arthtm...

<div class="content text-xs">
新闻内容
</div>

总之就是一个程序把这三个:新闻标题、完整原路径和内容都采集下来,麻烦高手用CURL,在代码最少的情况下程序写出来

下面附上CURL程序,提高回答者效率

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'');//远程地址
curl_setopt($ch, CURLOPT_REFERER, '');//模拟来路
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36");//模拟终端
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,  "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_COOKIE,'');
curl_setopt( $ch, CURLOPT_TIMEOUT,30); 
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
阅读 2.2k
3 个回答

list-text-my".+?<\/ul
取列表段html
href="(.+?)"
取a,遍历下手补url
"content text-xs">(.+?)<\/div
这不就好了么。。。
然而很显然的正则的坑你还没有开始踩,那其实最好不要踩,dom解析框架不慢。。。

以及有一说一你这curl封装一下都比preg_match省代码。。。

有没有一种可能,其他采集的人用的不是正则,而是 css、xpath 之类的,通过解析 html,或者 xml 来识别内容的。

如果是为了学习,我建议你自己学习一遍正则表达式,如果是为了解决工作中的需求难题,何必要自己造轮子呢?得学会自己找轮子[狗头],比如这个http://www.querylist.cc/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题