php禁止网页抓取(用浏览器打开没有问题.(函数获取内容) )
优采云 发布时间: 2022-02-20 02:03php禁止网页抓取(用浏览器打开没有问题.(函数获取内容)
)
由 admin 于 2019 年 8 月 7 日发布
使用 curl 单独获取有效,但是如果获取相同类型的系列 网站会失败,请将它们放入数组中
$linkList,分别以此类推。
1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />function getJobsHubuNotice()<br />
<br />
{<br />
<br />
$curl = curl_init('http://jobs.hubu.edu.cn/List.aspx?ArticleChannelId=81');<br />
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);<br />
$result = curl_exec($curl);<br />
//内容处理<br />
$result = strip_tags($result,'<a>');<br />
$result = stristr($result, 'nbsp当前位置:');<br />
$result = str_replace('nbsp当前位置:', '', $result);<br />
$result = stristr($result, '当前1/2页',true);<br />
$result = stristr($result, '通知公告');<br />
$result = str_replace('通知公告</a>', '', $result);<br />
preg_match_all('/(?<=href=").*?(?=")/', $result, $arrayTemp);<br />
$linkList = $arrayTemp[0];<br />
preg_match_all('/(?<=title=").*?(?=")/', $result, $arrayTemp);<br />
$titleList = $arrayTemp[0];<br />
preg_match_all('/(?<=\[)\d*\-\d*(?=\])/', $result, $arrayTemp);<br />
$dateList_temp = $arrayTemp[0];<br />
$dateList = array();<br />
$linkList = str_replace('Detail.aspx', 'http://jobs.hubu.edu.cn/Detail.aspx', $linkList);<br />
foreach ($dateList_temp as $key => $value) {<br />
$dateList[$key] = date('Y').'-'.$value;<br />
}<br />
$JobsHubu = array();<br />
//分别获得网页上的每条通知的标题,链接,时间<br />
$JobsHubu[0] = $dateList;<br />
$JobsHubu[1] = $titleList;<br />
$JobsHubu[2] = $linkList;<br />
return $JobsHubu;<br />
}<br />
//<br />
function makePage($link)<br />
{<br />
<br />
....... //省略部分代码<br />
else if(starts($link,'jobs.hubu'))<br />
{<br />
echo "进入makePage函数";<br />
echo "处理网页".$link.'<br/>';<br />
$curl = curl_init();<br />
curl_setopt($curl, CURLOPT_URL , $link);<br />
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);<br />
$result = curl_exec($curl);<br />
//echo $result;<br />
//echo "result结束";<br />
$result = strip_tags($result);<br />
$result = stristr($result, '&nbsp;>&nbsp;通知公告');<br />
$result = str_replace('&nbsp;>&nbsp;通知公告', '', $result);<br />
$result = stristr($result, '$(document).ready',true);<br />
$result = trim($result);<br />
$result = str_replace("\r\n", '<br/>', $result);<br />
$result = preg_replace('/(\<br\/\>){1,}/', '<br/>', $result);<br />
echo $result;<br />
echo '<br/><br/>';<br />
echo "退出makePage函数";<br />
return $result;<br />
}<br />
}
先使用getJobsHubuNotice()函数获取新闻的链接、标题、日期,再使用makePage()函数获取内容
这是在makePage里面打印链接的结果,用浏览器打开链接没有问题。