腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

如何优雅的扒网站——工具篇

2
回复
1188
查看
[复制链接]

763

主题

777

帖子

3万

积分

董事

Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72

积分
32946
发表于 19-4-1 14:54:05 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
        在上一篇文章里本人介绍了扒网站的入门知识。可以说是仿站的必备知识。不过,在实战中没必要所有的页面都要全部手动去操作处理,完全可以借助大牛们写好的工具。网上搜索仿站工具或扒站工具能找到一堆,我就不一一介绍了。今天就分为两个部分来讲一讲扒站工具,第一部分是针对单页面的,第二部分是针对整站的。不要以为有了整站下载工具第一部分就可以跳过。目前为止我还没有找到一款完美的整站下载工具,大部分都要很繁锁地处理代码。所以除非页面很多,不然真不如单个页面分别抓取更快捷一些。
6 m! L+ G7 R+ I6 s* [- {         第一个工具是抓取单网页的。, D5 X. a* t, x9 o/ J2 [
         每个软件的名称不一样,但是使用方法都是大同小异。我在这里就拿这个仿站工具举例了。首先打开软件,添加要抓取的网页地址,再点击下一步。
, M4 j! p. j- y( r8 b 24435ca1b4e14ed33.png
) d" w& x1 X2 K1 y9 V# g: X; e          593575ca1b4ee68219.png
! c  V& C* p  i         然后,选择好存放站点文件的目录,点击开始下载,等待下载完成即可。9 `+ p) [" i; ~7 V& R$ n
276645ca1b4f5c3919.png   u4 ~; F+ p9 e
75335ca1b4facdbde.png
$ R: j$ y8 C7 d+ {5 N
" V3 ?2 ^) i  H+ D 697135ca1b5054e433.png
# }! a' Q5 ?' C. ~  ~         到这一步已经完成,打开选择的存放目录,你需要的文件已经按image,css,js分类好了,其中image是页面引用的图片,picture是css中引用的图片。是不是soeasy.
, I2 P# ?0 I" L. Q& g( D 670815ca1b510b514b.png
/ |# U/ ^: S# W: C/ r         第二部分是整站下载' G( [9 y$ w# y4 }7 o
         感觉整站下载是个高大上的手段,能把别人的网站整个剽窃下来。不过下面的步骤可能会令你有些失望。因为我使用的这个工具有太多不尽人意之处,比如说html,css,js没有美观的分类,html命名莫名地冗长,背景图片的无端丢失,还有软件商植入的标签痕迹。带着这些问题点我们要一一解决掉。
/ m& r) G  n" m( u  Q6 A. [         先给这个工具来个特写吧,我是没有花钱直接下载的注册版,估计花钱购买的会更好用一些。3 T3 d: U' S7 d  K8 \8 ^
          737735ca1b52fe6e65.png
8 A/ x" p% q, j+ Y" H         首先在菜单栏,依次选择文件-新建项目向导,在弹出框里点击下一步。5 q+ l3 I2 s' h+ n/ T( |7 U
333205ca1b5349c709.png 9 E7 c( A& k/ R0 }
         然后,还是傻瓜式的操作。填写上要抓的网站地址,当然是写网站首页。链接深度不用管用默认的3就可以,接着点下一步。- u! @5 _2 K6 J! Q6 a/ Q- n
          288835ca1b53a38747.png ! N; K. \0 {  {% O  ^) P, Y7 |
         接下来还是下一步,如果有账号密码就填上,没有就忽略。
1 _3 L; R: {: @9 J          406335ca1b53e73473.png
% ]+ h" |9 j! t( M3 ?- {: m" H) h         一路点完成后,会提示选择存放路径。然后配置步骤就算完成了。然后激动人心的时刻来了,点击工具栏的三角图标。整站下载就开始了,等一两分钟,提示下载完成。
; Q+ t0 E6 F' D# L5 o" U/ w* k3 d! h0 y" d2 n. U$ B* _
731595ca1b544509da.png
1 M' g2 v$ \- {1 y; R: z* d# h: Z, `& g: G2 G' b7 U. w1 v
54915ca1b54b4102a.png
2 `: v& s$ U$ Z7 N& H8 `0 m2 K1 {8 I& d3 Y& ]

+ P& H, T$ u" `/ d& R2 \ 192475ca1b5504af1f.png
' v& ^2 ]6 K3 U. H
5 _( _. ^+ v# D- H8 k( F) C- b# w

% f  v* E8 C  L6 E 197125ca1b554b1656.png
( _$ U2 z- ]8 G1 ?) e
  F1 I6 \4 k- c/ N         不要以为这就算结束了,这才刚刚开始。你也看到了,所有文件都放在一个目录里。而且我已经按照类型排序,还是如此混乱。幸好是只有两个页面,如果多的话那要乱成什么样子。下面的工作就是处理我一开始说的各种问题,包括统一命名。因为如果有子页面的话,他会用特别长的字符来命名。
1 z! m# p) I' V7 r1.      按类型分类。; h3 y! T0 O4 B0 D6 J
按类型分类是个很好的习惯,强列建议把这一步放在第一位,谨记分类后把页面的引入路径批量调整下。
2 V1 k9 T4 u! `. B8 P( t
- o4 S" U/ A) }) `+ {/ B! O         2.使用正则去掉tppabs标记
% [1 ^; r! k, o% W5 r! s                   816645ca1b55a65ba7.png ! H; ]$ _0 Q0 f6 K
                   如果你用的工具没有这种流氓行为那么可以忽略这一步。如果有那么我们就需要使用正则来批量替换了。这应该是特别简单的正则了,具体语句和替换方式请根据使用工具和文本编辑软件来使用,这里以sublime作参考,tppabs="[^"]+"。& I$ i; K& G; P$ E- j' c; D
          904495ca1b55fb72f2.png
  o- s1 m/ ?$ B0 r4 n: v  3.使用脚本下载css中的背景图片。
% U  a/ B$ C- w7 S- s; L5 D          上面提到过了,这个工具会漏掉css文件中的背景图片文件。那么我们就需要单独写个脚本来下载图片了。至于用什么脚本看你擅长什么了。我用的是php,所以用php脚本作参考。同第一步一样,下载好以后,记得把引入的文件路径与实际路径对应上。
, l1 A6 W  }  D2 r" p' A$ A& {; i
% N& ?7 F: x+ ^& J
  1. $root_url = 'http://m.enjoyfin.com/statics/css/'; //原存放css文件的根目录2 [* v' A$ Y0 P) a. m+ ^6 f- i% D
  2.     $pic_bac  = 'http://m.enjoyfin.com/statics/';     //原存放背景图片的根目录9 g' n$ a4 Q3 v: y7 V3 Y
  3.     $webs = array(
    5 z$ Z' _% l2 @* ~
  4.             'style.css',
    * w& N8 B5 C$ \& G, c; z) q* P
  5.             'swiper.css'
    7 S; h( ]( g4 j( d( v+ }
  6.             );2 b/ p; ~4 L8 ?
  7.     echo "<pre>";
    $ _# Q8 Y( r' J% h1 s( f: y5 u
  8.     foreach($webs as $k=>$v)$ L, ]7 l' L# o! B
  9.     {
    * z  X0 x9 E1 M  \# G$ @. N2 n
  10.         $url = $root_url.$v;' |( E" U# t. C6 S- |2 Y- |) V
  11.         $contents = file_get_contents($url);7 m* b& Q0 u, l7 K: Y" f
  12.         if(preg_match_all("/background:url\(\.\.\/(.+)\)\s+no-repeat/",$contents,$new)){( \! j' w. o5 O+ ~/ P3 M3 j
  13.         //print_r($new[1]);" Y( q. Q1 m9 x6 J& g
  14.               foreach ($new[1] as $key => $value) {5 o6 S# Z" Y, N5 K/ W! I
  15.                   $pic_url = $pic_bac.$value;4 r7 K1 K6 C0 P* l. z3 q6 N
  16.                   $new_url = './images/'.substr(strrchr($value, '/'), 1);+ t7 `8 `+ I* ~- G; a: c
  17.                   3 e6 ^. m& v4 Q; o4 y' Z7 ]+ Y" l
  18.                   echo "<br>";
    ( v: X9 H" U6 T& {$ G
  19.                   $content = file_get_contents($pic_url);( M/ I0 v9 ]8 F
  20.                 file_put_contents($new_url,$content);
    / J& O$ B5 q! C( i( M
  21.                 echo $new_url;
    0 u1 P3 y- _$ n- U. j/ I1 M% ~' n5 b
  22.               }$ ~( `  d/ g7 T; x9 B' y
  23.         }else{  u1 s6 N- V6 X* M1 {' L1 F
  24.                echo '未找到';* l# N; r5 Q7 G1 C2 p: ]
  25.         }
    4 @" E8 Z' K6 u  c4 T
  26.     }
复制代码
% e7 w( L: o7 @( Z- i
4.批量命名文件
$ q; m: T: v7 ^5 f+ ]不嫌麻烦的话手动重命名未尝不可,我在这里只是提供一个思路,肯定会有更好的方法。
9 \1 G( n) P6 i. e& a- @7 d0 h: I首先打开cmd,进入存放html文件的目录,使用dir /b>abc.xls  命令把所有文件导出到abc.xls的excel表格里。然后,使用分列,合并等等方法,把每一条内容变成
1 R* ^4 k" n1 E8 B! C% o7 ]3 A* }; l+ w0 x) W3 a
  1. rename "index.php-m=content&c=index&a=show&catid=9&id=9.htm" "catid=9id=9.htm"  // 重命名文件
复制代码
. k. F7 s$ C* v$ f5 X

3 K' O$ {1 e, |% V# s3 w) h3 j
  G, O( T4 \, C, {9 X类似这样一条命令,再把命令脚本全都放在一个记事本里,保存成bat拓展名的可执行脚本放在Html文件目录,双击执行就ok了。当然还有关键的一步,把html文件中的引入路径,链接路径批量替换一下。
+ e, _; L* k; V6 P( m+ A3 \/ K; V$ K: t
         以上就是抓取单页面和整站使用工具的方法,如果任性可以去购买收费软件。如果穷逼或是练手,那么不妨一试吧。. S  q: r1 k0 E, S

4 n% ?; N5 J7 q: @2 X0 ~

0

主题

4

帖子

4

积分

1°伸手党

Rank: 2

积分
4
发表于 19-10-4 14:45:16 | 显示全部楼层         
回复

使用道具 举报

0

主题

9

帖子

24

积分

1°伸手党

Rank: 2

积分
24
发表于 19-11-27 20:41:28 | 显示全部楼层         
20:41:28
回复

使用道具 举报

网站简介

球球发,是一家 Discuz! 商业插件、风格模板、网站源码、 Discuz!运营维护技术等于一体的交流分享网站,全站95%的资源都是免费下载,对于资源我们是每天更新,每个亲测资源最新最全---球球发(如果我们有侵犯了您权益的资源请联系我们删除