9
九/08
2

php抓取页面技巧



都知道用php抓取网页文件要用到正则表达式preg_match_all和file_get_contents函数,后者用来获取文件内容,前者用来过滤出需要的内容。

昨天抓取一个页面的时候,发现了一个有点bt的页面。里面的标点符号都替换成了图片,就是为了防止批量复制粘贴,因为这样粘贴进来的文章没有标点符号可想而知有多痛苦了。不过难不倒我们。

虽然每个文章的标点符号是用程序随即生成图片名称的,也就是说每个图片的名字都不一样,但我们可以肯定同样的标点符号(比如逗号)图片的md5值肯定是一样的,可以测试下:
<?php
copy(‘http://www.target.com/article1/comma54321.gif’, ‘pic1.gif ‘);
copy(‘http://www.target.com/article2/comma12345.gif’, ‘pic2.gif’);
echo md5_file(‘pic1.gif’), ‘<br />’, md5_file(‘pic2.gif’);
?>

可以看出不同文章里面的相同标点符号图片md5值是一样的,这样我们就可以在抓取程序中定义一个数组,用来做替换。
<?php
$replace_into = array(
  ‘md5_1′ => ‘,’,
  ‘md5_2′ => ‘。’,
  ‘md5_3′ => ‘、’,
);
if (array_key_exists(md5_file(‘url’), $replace_into)) {
  // do replacing str…
}
?>

这样抓取出来的东西则把图片替换为了我们想要的中文标点符号。问题解决。

此外,碰到一些有规则的图片,我们可以利用seq和shell知识做出一个下载器,下载下来进行分析。
#!/bin/bash
for  i in `seq -w 1 100` do  
wget -c "http://www.target.com/images/file_$i.gif"
done

 


相关文章

关键字: ,
评论 (2) Trackbacks (0)
  1. spycing
    13:01 on 九月 26th, 2008

    呵呵,这就是解决办法的能力!佩服

  2. 南宁网站建设
    19:43 on 七月 8th, 2011

    好像不是很全

发表评论

No trackbacks yet.