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

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

1
回复
977
查看
[复制链接]

761

主题

775

帖子

3万

积分

董事

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

积分
32810
发表于 19-4-1 14:54:05 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
        在上一篇文章里本人介绍了扒网站的入门知识。可以说是仿站的必备知识。不过,在实战中没必要所有的页面都要全部手动去操作处理,完全可以借助大牛们写好的工具。网上搜索仿站工具或扒站工具能找到一堆,我就不一一介绍了。今天就分为两个部分来讲一讲扒站工具,第一部分是针对单页面的,第二部分是针对整站的。不要以为有了整站下载工具第一部分就可以跳过。目前为止我还没有找到一款完美的整站下载工具,大部分都要很繁锁地处理代码。所以除非页面很多,不然真不如单个页面分别抓取更快捷一些。
0 T5 @. e8 E+ [9 Y. v; ?0 J% L         第一个工具是抓取单网页的。
8 ^/ I1 B5 A7 U3 g  i3 j         每个软件的名称不一样,但是使用方法都是大同小异。我在这里就拿这个仿站工具举例了。首先打开软件,添加要抓取的网页地址,再点击下一步。5 a4 c/ ~$ c2 |; [3 @$ @
24435ca1b4e14ed33.png 5 S# z% |* R, b7 n1 W5 a
          593575ca1b4ee68219.png # u( \( d- Q% s2 o
         然后,选择好存放站点文件的目录,点击开始下载,等待下载完成即可。
" ~8 J7 ~) E7 u 276645ca1b4f5c3919.png ! d- S  G* B% C0 \
75335ca1b4facdbde.png 2 Z+ I% N! A2 L+ v: B
7 _$ Y* r  t2 t  L' Y* G
697135ca1b5054e433.png 0 g: v+ [% c! W. x& V- @$ y
         到这一步已经完成,打开选择的存放目录,你需要的文件已经按image,css,js分类好了,其中image是页面引用的图片,picture是css中引用的图片。是不是soeasy.
7 h0 a, Y8 T8 D& X, r5 K 670815ca1b510b514b.png % H- h5 s6 }6 V
         第二部分是整站下载+ {9 F0 S4 ~/ J# j
         感觉整站下载是个高大上的手段,能把别人的网站整个剽窃下来。不过下面的步骤可能会令你有些失望。因为我使用的这个工具有太多不尽人意之处,比如说html,css,js没有美观的分类,html命名莫名地冗长,背景图片的无端丢失,还有软件商植入的标签痕迹。带着这些问题点我们要一一解决掉。- r8 o, Y, f: S: i
         先给这个工具来个特写吧,我是没有花钱直接下载的注册版,估计花钱购买的会更好用一些。$ T5 E; m3 P; x0 D7 K1 K
          737735ca1b52fe6e65.png * K" z! M4 L) S; K, k+ \2 f
         首先在菜单栏,依次选择文件-新建项目向导,在弹出框里点击下一步。' i! y, M3 x" {
333205ca1b5349c709.png 5 H0 H3 |. E  }; b, ~
         然后,还是傻瓜式的操作。填写上要抓的网站地址,当然是写网站首页。链接深度不用管用默认的3就可以,接着点下一步。
; y4 A/ i/ t/ `! @0 p          288835ca1b53a38747.png
$ J/ c  d5 S2 `; j         接下来还是下一步,如果有账号密码就填上,没有就忽略。
1 B) }2 ]3 V  j          406335ca1b53e73473.png
  \: [% a' z2 W# L         一路点完成后,会提示选择存放路径。然后配置步骤就算完成了。然后激动人心的时刻来了,点击工具栏的三角图标。整站下载就开始了,等一两分钟,提示下载完成。
1 H) J2 |3 g: D5 N$ t6 v+ O
9 }; c8 m6 k* N& A5 c8 y 731595ca1b544509da.png
/ `5 f" @! ^: U( _1 E. B: @5 E* L+ a$ s/ y" k
54915ca1b54b4102a.png
5 r/ d; ^5 T0 e, ^
, W" P+ l: e5 O% [: N
# k7 P7 j. \+ g! T' S% S8 e$ v 192475ca1b5504af1f.png
% a& |! _& H4 U3 s% b3 V
1 a/ ~/ |4 q1 b5 A8 t: @, C' ?) f
) |4 U6 C' j* S% v
197125ca1b554b1656.png
" J/ ^: Z/ _$ I) G9 s( r) w% F+ t; M% Z2 Q
         不要以为这就算结束了,这才刚刚开始。你也看到了,所有文件都放在一个目录里。而且我已经按照类型排序,还是如此混乱。幸好是只有两个页面,如果多的话那要乱成什么样子。下面的工作就是处理我一开始说的各种问题,包括统一命名。因为如果有子页面的话,他会用特别长的字符来命名。/ l' V+ e( \# z4 o( c. i
1.      按类型分类。
5 }( I, [$ n1 F按类型分类是个很好的习惯,强列建议把这一步放在第一位,谨记分类后把页面的引入路径批量调整下。
" y2 g" c. X% [, {2 @; J5 }$ _  f- L9 f! j# K" s  j2 [" Q3 t
         2.使用正则去掉tppabs标记/ D- L% S# l. M! u2 y
                   816645ca1b55a65ba7.png
  N$ I( @" ]3 }, F  V! c8 G                   如果你用的工具没有这种流氓行为那么可以忽略这一步。如果有那么我们就需要使用正则来批量替换了。这应该是特别简单的正则了,具体语句和替换方式请根据使用工具和文本编辑软件来使用,这里以sublime作参考,tppabs="[^"]+"。
0 x8 D6 Y4 W3 O9 e3 I- J          904495ca1b55fb72f2.png # x& ]) S& W5 x2 O; V9 |
  3.使用脚本下载css中的背景图片。% p1 i' C3 R+ p: E& d
          上面提到过了,这个工具会漏掉css文件中的背景图片文件。那么我们就需要单独写个脚本来下载图片了。至于用什么脚本看你擅长什么了。我用的是php,所以用php脚本作参考。同第一步一样,下载好以后,记得把引入的文件路径与实际路径对应上。% t; B2 G2 l0 q9 E3 p: M

+ J) n  j2 _$ f9 ^8 w! k
  1. $root_url = 'http://m.enjoyfin.com/statics/css/'; //原存放css文件的根目录8 z  V& {0 q1 w) L- l
  2.     $pic_bac  = 'http://m.enjoyfin.com/statics/';     //原存放背景图片的根目录
    % H( n2 L# X  E8 t
  3.     $webs = array(1 V) {: }1 a( k9 T  `2 j. f
  4.             'style.css',
    % y) V$ g: n. x" ~) X
  5.             'swiper.css'
    5 q. }+ H. a2 g( h
  6.             );
    9 u  V. ^0 J: z
  7.     echo "<pre>";( |2 |1 f1 A0 V
  8.     foreach($webs as $k=>$v). W  x) V- I6 o
  9.     {
      K/ f- _  Y: D+ s. `8 E
  10.         $url = $root_url.$v;
    , {6 |: N/ d3 s* B' c( d: ]; K
  11.         $contents = file_get_contents($url);1 ~9 B7 @& n7 f
  12.         if(preg_match_all("/background:url\(\.\.\/(.+)\)\s+no-repeat/",$contents,$new)){6 o* v- q$ Q/ C  l; n
  13.         //print_r($new[1]);
    ; ?' g9 n/ f1 F
  14.               foreach ($new[1] as $key => $value) {
    * D& M3 F( G, [$ E3 p/ u! q. Y( c
  15.                   $pic_url = $pic_bac.$value;6 F2 H! |' G) a- s
  16.                   $new_url = './images/'.substr(strrchr($value, '/'), 1);
    ) J3 ]  }  D! c5 r4 l- g# A9 v
  17.                   3 D# n  g! N0 y& f5 {; P4 i+ g
  18.                   echo "<br>";
      D) K# s4 }% v
  19.                   $content = file_get_contents($pic_url);1 \' U: B) d7 o8 V
  20.                 file_put_contents($new_url,$content);
    2 v5 b2 s% K$ l% R( Q* k& O
  21.                 echo $new_url;/ X  Q8 z% l; d% S; O+ W
  22.               }7 B! K" B1 Y) \
  23.         }else{- [9 u4 }7 t1 b; T# q
  24.                echo '未找到';
    " C9 H2 V; g3 W2 ?, s8 |
  25.         }/ ]: F4 L1 ~- n! [  R" M
  26.     }
复制代码
: l0 t* w/ H- h- v* q
4.批量命名文件& H% Q. t! z7 ^% }: p& K
不嫌麻烦的话手动重命名未尝不可,我在这里只是提供一个思路,肯定会有更好的方法。
# k5 ^& V$ n/ M+ T1 ~' c首先打开cmd,进入存放html文件的目录,使用dir /b>abc.xls  命令把所有文件导出到abc.xls的excel表格里。然后,使用分列,合并等等方法,把每一条内容变成% a: ~' o( t! ]3 w8 C

2 b- H- @/ Y' d% p
  1. rename "index.php-m=content&c=index&a=show&catid=9&id=9.htm" "catid=9id=9.htm"  // 重命名文件
复制代码

3 x' N! ]. w  V7 `$ A) X: r/ ^1 `9 b8 D" {. O9 {: ]% }4 f

0 b' N3 j8 k- r9 c9 c5 v类似这样一条命令,再把命令脚本全都放在一个记事本里,保存成bat拓展名的可执行脚本放在Html文件目录,双击执行就ok了。当然还有关键的一步,把html文件中的引入路径,链接路径批量替换一下。
2 q1 D# f6 y4 {! x/ P4 s' R0 \& m, u6 ~! `5 ]
         以上就是抓取单页面和整站使用工具的方法,如果任性可以去购买收费软件。如果穷逼或是练手,那么不妨一试吧。
5 @& F7 n4 O! ~% m5 R4 {/ d
  g2 w! k9 w/ U

0

主题

1

帖子

4

积分

1°伸手党

Rank: 2

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

使用道具 举报

网站简介

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