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

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

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

765

主题

779

帖子

3万

积分

董事

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

积分
33025
发表于 19-4-1 14:54:05 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
        在上一篇文章里本人介绍了扒网站的入门知识。可以说是仿站的必备知识。不过,在实战中没必要所有的页面都要全部手动去操作处理,完全可以借助大牛们写好的工具。网上搜索仿站工具或扒站工具能找到一堆,我就不一一介绍了。今天就分为两个部分来讲一讲扒站工具,第一部分是针对单页面的,第二部分是针对整站的。不要以为有了整站下载工具第一部分就可以跳过。目前为止我还没有找到一款完美的整站下载工具,大部分都要很繁锁地处理代码。所以除非页面很多,不然真不如单个页面分别抓取更快捷一些。: W6 b' j/ J( W/ t) r
         第一个工具是抓取单网页的。
0 u% U+ Z6 X1 u& m* _( h         每个软件的名称不一样,但是使用方法都是大同小异。我在这里就拿这个仿站工具举例了。首先打开软件,添加要抓取的网页地址,再点击下一步。
  O" \* [$ t0 k' Z4 E 24435ca1b4e14ed33.png 0 A) I4 [: @1 ]
          593575ca1b4ee68219.png * k; q2 p$ x( O8 F& o/ B8 z4 P$ R
         然后,选择好存放站点文件的目录,点击开始下载,等待下载完成即可。/ w+ n! e( [0 T' ~! D" |* ?5 }, _
276645ca1b4f5c3919.png
* r1 V" x/ F: W2 b4 r 75335ca1b4facdbde.png   P: G. b$ I$ Z% s

2 j/ p* `+ u2 O( e 697135ca1b5054e433.png
# k4 j: a2 H  f" u3 J         到这一步已经完成,打开选择的存放目录,你需要的文件已经按image,css,js分类好了,其中image是页面引用的图片,picture是css中引用的图片。是不是soeasy.
. o  i8 l$ k" h9 }3 D1 u 670815ca1b510b514b.png 2 w' F+ ~7 R' ^, g) n* S
         第二部分是整站下载3 R1 ?# l+ n8 @
         感觉整站下载是个高大上的手段,能把别人的网站整个剽窃下来。不过下面的步骤可能会令你有些失望。因为我使用的这个工具有太多不尽人意之处,比如说html,css,js没有美观的分类,html命名莫名地冗长,背景图片的无端丢失,还有软件商植入的标签痕迹。带着这些问题点我们要一一解决掉。7 S# c- d) {" `" b
         先给这个工具来个特写吧,我是没有花钱直接下载的注册版,估计花钱购买的会更好用一些。8 s  G( y4 `  V
          737735ca1b52fe6e65.png
3 L  l9 o% V! C         首先在菜单栏,依次选择文件-新建项目向导,在弹出框里点击下一步。
  o& S0 f" g% }! G$ j8 x, W+ t 333205ca1b5349c709.png 8 a2 g) n* J/ _% u/ N5 g
         然后,还是傻瓜式的操作。填写上要抓的网站地址,当然是写网站首页。链接深度不用管用默认的3就可以,接着点下一步。  q6 {  K$ G3 o3 S2 ~  C4 \
          288835ca1b53a38747.png
  o" i$ ?' K5 e0 q1 W! @- w! z         接下来还是下一步,如果有账号密码就填上,没有就忽略。+ I3 b) C6 R& c& i4 O* R
          406335ca1b53e73473.png 5 D; E- w2 o( k% q
         一路点完成后,会提示选择存放路径。然后配置步骤就算完成了。然后激动人心的时刻来了,点击工具栏的三角图标。整站下载就开始了,等一两分钟,提示下载完成。7 W1 r9 k$ Z1 a: _& `

7 w) n: H* d0 Y+ V, F+ D. ]: y 731595ca1b544509da.png
& m5 W) B' a% }; C% S" ~0 Y7 a8 |" {( N- U
54915ca1b54b4102a.png & b, H  C" ]8 E6 ]3 C: D. `/ V
/ O* h+ K6 ?! m& D9 P

0 v2 _7 i3 c' N 192475ca1b5504af1f.png $ g/ k: X2 y. a% O* ^3 D
. f( @$ @1 Q, D& Y/ l

  B6 {2 [/ l0 s
' L! _+ v, Y# s 197125ca1b554b1656.png ' ^1 f9 ~0 s/ r. k; F

  I9 x0 a" ~' o         不要以为这就算结束了,这才刚刚开始。你也看到了,所有文件都放在一个目录里。而且我已经按照类型排序,还是如此混乱。幸好是只有两个页面,如果多的话那要乱成什么样子。下面的工作就是处理我一开始说的各种问题,包括统一命名。因为如果有子页面的话,他会用特别长的字符来命名。* \: \0 @& }0 Z) v5 d" W& C
1.      按类型分类。% r$ {+ {# q) K- E6 @3 P+ h
按类型分类是个很好的习惯,强列建议把这一步放在第一位,谨记分类后把页面的引入路径批量调整下。
; Q1 f% L$ [  V- C" a: e) M" b
         2.使用正则去掉tppabs标记
+ A% ?; U7 w- H                   816645ca1b55a65ba7.png
# u+ U, G3 e4 E                   如果你用的工具没有这种流氓行为那么可以忽略这一步。如果有那么我们就需要使用正则来批量替换了。这应该是特别简单的正则了,具体语句和替换方式请根据使用工具和文本编辑软件来使用,这里以sublime作参考,tppabs="[^"]+"。
( ], Z9 }! Z" \. V          904495ca1b55fb72f2.png ' d, {" k8 y" t+ b+ p  T1 c$ u
  3.使用脚本下载css中的背景图片。
2 g" S3 i* g: G5 J- y          上面提到过了,这个工具会漏掉css文件中的背景图片文件。那么我们就需要单独写个脚本来下载图片了。至于用什么脚本看你擅长什么了。我用的是php,所以用php脚本作参考。同第一步一样,下载好以后,记得把引入的文件路径与实际路径对应上。( h$ z# @2 X( n
! Y: ^$ o- q/ f, B- g+ O! u- B3 H
  1. $root_url = 'http://m.enjoyfin.com/statics/css/'; //原存放css文件的根目录7 v5 R7 B) S1 h7 p% ^
  2.     $pic_bac  = 'http://m.enjoyfin.com/statics/';     //原存放背景图片的根目录
    * [$ S2 C8 P& ?$ R- C, M
  3.     $webs = array(# u$ w, }/ _3 A: ^! k
  4.             'style.css',, v' u( w' n4 o% v$ r) s
  5.             'swiper.css'- a; o# ^9 Q* h' s8 t
  6.             );
      z3 @! X5 q' Q& t; t- P
  7.     echo "<pre>";" [" I* U9 g% D% h4 i
  8.     foreach($webs as $k=>$v)/ ~; r; J( b# J" l5 r5 F( G
  9.     {
    1 D, G) H& X0 X& [7 ?8 C
  10.         $url = $root_url.$v;
    . \3 n% U6 i4 l( r2 U9 X
  11.         $contents = file_get_contents($url);
    ( u1 p1 O) `- z' X0 _' R
  12.         if(preg_match_all("/background:url\(\.\.\/(.+)\)\s+no-repeat/",$contents,$new)){) p$ g! g) O: k5 x" v$ V
  13.         //print_r($new[1]);% ^/ ~/ a$ K% L- h
  14.               foreach ($new[1] as $key => $value) {! C" |, g' v' i1 B% r2 R% e
  15.                   $pic_url = $pic_bac.$value;
    4 h  e0 H4 Y- M7 d- c
  16.                   $new_url = './images/'.substr(strrchr($value, '/'), 1);  D9 i3 [- ~, u' L
  17.                   
    ) h& `: D9 {, U* I
  18.                   echo "<br>";9 [' s) m' `+ P+ h1 M
  19.                   $content = file_get_contents($pic_url);) E2 H: v0 `0 w: w  c+ |0 _
  20.                 file_put_contents($new_url,$content);7 M& j7 f9 U/ d/ R
  21.                 echo $new_url;
    / m; H# Z3 i2 g/ M1 B
  22.               }
    $ u; o& v( G8 T6 [2 a+ D
  23.         }else{
    . X, Z" ^0 B& k
  24.                echo '未找到';$ b2 j& @3 X, k7 _9 f/ i
  25.         }
    . m+ B9 Q! q8 x( L
  26.     }
复制代码
  D4 c: l  |1 \  f! d! O0 S
4.批量命名文件
% V  z4 U# Z, Z5 t" Y8 u: V不嫌麻烦的话手动重命名未尝不可,我在这里只是提供一个思路,肯定会有更好的方法。7 C6 q6 C$ O1 ~9 T) i
首先打开cmd,进入存放html文件的目录,使用dir /b>abc.xls  命令把所有文件导出到abc.xls的excel表格里。然后,使用分列,合并等等方法,把每一条内容变成
% L0 \* |$ z* t4 d
1 C8 Z8 v7 I8 y& a# ]% ^( ~* ]
  1. rename "index.php-m=content&c=index&a=show&catid=9&id=9.htm" "catid=9id=9.htm"  // 重命名文件
复制代码
! q' ~/ y! p% j! W' w1 z

+ F8 c- I# ~3 a, j3 X6 Y2 O' h2 ]- H3 z4 [% N1 b" ?$ f
类似这样一条命令,再把命令脚本全都放在一个记事本里,保存成bat拓展名的可执行脚本放在Html文件目录,双击执行就ok了。当然还有关键的一步,把html文件中的引入路径,链接路径批量替换一下。
' J. f' _) r1 @5 z' U& x  G7 R  o2 w4 K# o; N* j7 H9 H
         以上就是抓取单页面和整站使用工具的方法,如果任性可以去购买收费软件。如果穷逼或是练手,那么不妨一试吧。
8 |5 A+ }: a6 M: M8 ^" s8 t
9 Z4 L$ J3 X! u3 q0 _3 O

0

主题

6

帖子

4

积分

1°伸手党

Rank: 2

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

使用道具 举报

0

主题

11

帖子

24

积分

1°伸手党

Rank: 2

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

使用道具 举报

网站简介

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