初识PHP爬虫(1.1)-抓取网页所有超链接之好大夫全站

作者: pengpeng 分类: 所有文章 发布时间: 2017-12-04 10:40

今天想抓点连接,然后通过我的bba.fun接口批量生成一下超链接,于是,就找到了好大夫:http://www.haodf.com/来抓,毕竟医疗吗,问题的问题也比较多,页面多。还是原来的服务器。还是原来的代码。不过这次匹配的规则加了前缀。出乎意料的发现,速度竟然能这么快。不到5分钟,已经抓了20w的数据,而前几天,抓了四五个小时才抓了29w的超链接数据。我想可能是上一次规则中,为了去除静态资源foreach中有很多判断,可能是因为这个吧。

图片:

php代码:

<?php
ignore_user_abort();
set_time_limit(0);
$sql = mysql_connect('127.0.0.1','root','root') or die("数据库链接失败");
$select  = mysql_select_db('curls');
if(!$select){
die("选择错误");
}
$uid = 0;
do{
if(!file_exists('1.txt')){
break;
exit;
}
$uid++;
$sql = "select * from haodafu where id = '{$uid}'";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query)){
$url  = $row['url'];
$fw = file_get_contents($url);
$pp = preg_match_all("/http:\/\/www\.haodf\.com[\.|\s|\w\d|\=|\-|\_|\/|\&|\?|\:|\?|\&|\%|\=|\*]*/i",$fw,$arr);
$arrs = $arr[0];
foreach($arrs as $key=>$value){
$selecturl = "select * from haodafu where url = '{$arrs[$key]}'";
$selectquery = mysql_query($selecturl);
$selectNum = mysql_num_rows($selectquery);
if($selectNum == 0){
$insertsql = "insert into haodafu(url)values('{$arrs[$key]}')";
$inserquery = mysql_query($insertsql);
}
}
}
}while($uid);
?>

抓了半个小时,66w数据,怎么也绝对不对劲,一看代码,上面的代码查询数量的时候少了一个分号,导致所有查询为0,然后就一直循环插,循环插。。。。。。
无奈,数据库清空一下,重新抓吧。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

3条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注