我正在尝试拉所有的查询在这个页面中列出使用网络爬虫(代码如下)。 但我好像漏掉了什么。
我的代码如下:
<?php
function getSslPage($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_USERAGENT, "Chrome/36.0.1985.125");
$login = curl_exec($ch);
return $login;
}
$milesfeed = getSslPage('http://www.usmleforum.com/forum/index.php?forum=1');
preg_match_all('/<td class="FootNotes2">(.*?)<\/td>/s',$milesfeed,$links);
$milesfeed_links=[];
$milesfeed_text=[];
$fourth="abc";
$third="abc";
//$third="https://onemileatatime";
foreach($links[1] as $miles){
$milesfeed_text[] = strip_tags($miles);
preg_match_all('/<a target="_top" class="Links2" href="(.*?)">/s', $miles, $link);
$milesfeed_links[] = strip_tags($link[1][0]);
$first=explode("://",$link[1][0]);
$second=explode(".",$first[1]);
//print_r($second);
if($second[0]!=$third || $third=="abc"){
if($second[0]=="www"){
echo "<h3>".ucfirst($second[1])."</h3>";
}else{
echo "<h3>".ucfirst($second[0])."</h3>";
}
}
echo '<a href="'.$link[1][0].'" target="_blank">'.wordwrap(strip_tags($miles),30).'</a><br><br>';
$third=$second[0];
}
?>
我花了整整4个小时想自己搞清楚。 非常感谢任何帮助。。。
类class=“footnotes2”
不在tr
中,而在td
中,这可能会更改结果
编辑:
你的雷克赛在这种情况下是不对的。 您可以搜索 是否将正则表达式更改为 您可以使用https://regex101.com/进行测试。 我删除了它中的curl响应并更改了regex以在那里测试它 再次编辑: 我托克更好地看了看你的代码,看了看你试图刮的网站。 但是您有办法解决代码中的许多错误。 在你的循环中,你的一个值存在而没有检查,然后,你尝试rexeg不存在于你试图刮取的页面中的值和模式。 复制该页面的html,并在正则表达式测试器中研究和测试它,还将结果var_dump到从函数返回的结果中,并编写检查以确保存在不需要使用的数据。 按部就班地这样做,你就会得到你的结果。,但在 和 class=“footnotes2”
之间,您还具有其他属性
可能会帮助您相关问题