我打算用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);
list-text-my".+?<\/ul
取列表段html
href="(.+?)"
取a,遍历下手补url
"content text-xs">(.+?)<\/div
这不就好了么。。。
然而很显然的正则的坑你还没有开始踩,那其实最好不要踩,dom解析框架不慢。。。
以及有一说一你这curl封装一下都比preg_match省代码。。。