扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
对于第一项表单而言
麻阳网站建设公司创新互联公司,麻阳网站设计制作,有大型网站制作公司丰富经验。已为麻阳1000+提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的麻阳做网站的公司定做!
比如:
内容的第一页
内容的第二页
那么表单填.html
分析规则就是对比第一页与第二页的网址从左到右哪个字符出现不同,就把第一页网址之后的字符复制出来
如果是这种情况
;page=1
;page=2
对于这种情况,他后面不同的是一个数字,即是页码数字的话,就不需要填写.留空即可
对于第二项表单而言
第一页
第二页
那么右边的表单填_[page].htm
分析规则就是对比第一页与第二页的网址从左到右哪个字符出现不同,就把第二页的网址之后的字符复制出来,并把变动的页码数字用[page]替换
如果是这种情况
;page=1
;page=2
对于这种情况,他后面不同的是一个数字,即是页码数字的话,更简单,只需要填写[page]即可
对于第三项表单而言
第一页
第二页
此时属于怪癖的,理论上应该是
第三页
所以表单请选择是,但一般情况都是选否的,也就是说页码数字为1却是第二页.页码数为2却是第三页.就属于特殊现象.需要选则是.
可以用以下4个方法来抓取网站 的数据:
1. 用 file_get_contents 以 get 方式获取内容:
?
$url = '';
$html = file_get_contents($url);
echo $html;
2. 用fopen打开url,以get方式获取内容
?
$url = '';
$fp = fopen($url, 'r');
stream_get_meta_data($fp);
$result = '';
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}
echo "url body: $result";
fclose($fp);
3. 用file_get_contents函数,以post方式获取url
?
$data = array(
'foo'='bar',
'baz'='boom',
'site'='',
'name'='nowa magic');
$data = http_build_query($data);
//$postdata = http_build_query($data);
$options = array(
'http' = array(
'method' = 'POST',
'header' = 'Content-type:application/x-www-form-urlencoded',
'content' = $data
//'timeout' = 60 * 60 // 超时时间(单位:s)
)
);
$url = "";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
4、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展
$url = '';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
用curl获取到整个页面的html,然后用正则去匹配。我采集小说就是这么采集的,如果目标网站做了防采集,你就需要在curl中指定header来模拟浏览器了。
这段数据头很好匹配,终点在于结尾的匹配
那么这段字符串的最显著结尾就是']})'这个字符串了(这字符串应该是json,但是如果是json,结尾应该是']})]}'这样的五个括号,这里姑且按照你提供的']})'数据来匹配)
所以正则可以这样写
$str=file_get_contents('');
preg_match('/listData = ({.*?}]})/si',$str,$match);
echo $match[1].']}';
这样输出出来是一个完整的json
还有一种方法是用正则的平衡组匹配,但是写起来太过麻烦,而且因为这段json少了']}'两个括号,造成平衡组不平衡,所以在方法一可用的情况下,不推荐此写法
这个是平衡组匹配的相关资料:网页链接
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流