爬虫怎么能把整个网站给爬下来 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gaoyangang
V2EX    程序员

爬虫怎么能把整个网站给爬下来

  •  
  •   gaoyangang 2024-08-02 15:48:15 +08:00 4637 次点击
    这是一个创建于 437 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题:

    有什么办法可以把整个网站都爬下来,包括二级页面和各种 tab, 里面包括递归和 JS 渲染,想想都头大,各位彦祖集思广益,想想办法。

    30 条回复    2024-08-04 09:53:10 +08:00
    weixind
        1
    weixind  
       2024-08-02 15:49:48 +08:00
    爬虫爬的好,牢饭吃得饱。
    crocoBaby
        2
    crocoBaby  
       2024-08-02 15:53:00 +08:00
    直接爬路由
    9A0DIP9kgH1O4wjR
        3
    9A0DIP9kgH1O4wjR  
       2024-08-02 15:54:37 +08:00
    抓取页面中的所有连接,爬到一个页面就继续访问里面的链接,无限递归。
    高级一点的就是分析 URL 结构,自己拼接 URL 抓。
    FengMubai
        4
    FengMubai  
       2024-08-02 15:55:00 +08:00
    试试 idm
    erquren
        5
    erquren  
       2024-08-02 15:55:01 +08:00
    是不是为了合规
    gaoyangang
        6
    gaoyangang  
    OP
       2024-08-02 15:55:29 +08:00
    @weixind 国外网站,不慌
    D0n9
        7
    D0n9  
       2024-08-2 15:55:37 +08:00
    iyiluo
        8
    iyiluo  
       2024-08-02 15:57:55 +08:00
    做个链接去重不就行了,链接去重后塞进队列里面慢慢爬,不过你爬虫爬的时候小心有人敲门
    gaoyangang
        9
    gaoyangang  
    OP
       2024-08-02 15:59:21 +08:00
    @hanierming 有些 tab 要点击,才能加载出来
    wysnxzm
        10
    wysnxzm  
       2024-08-02 15:59:39 +08:00
    爬虫小寄巧
    9A0DIP9kgH1O4wjR
        11
    9A0DIP9kgH1O4wjR  
       2024-08-02 16:02:18 +08:00
    @gaoyangang 那应该是会调接口的吧?你直接请求接口?
    whoosy
        12
    whoosy  
       2024-08-02 16:27:00 +08:00
    https://github.com/projectdiscovery/katana

    这种开源库应该能满足你需求吧
    linhongjun
        13
    linhongjun  
       2024-08-02 16:31:47 +08:00
    以前我记得还有那种网站下载的软件 就是下载整站。。。。后来就没用过了
    xiangyuecn
        14
    xiangyuecn  
       2024-08-02 16:31:51 +08:00
    无头浏览器直接正常访问渲染,想要什么数据就读什么数据,管他乱七八糟的
    150530
        15
    150530  
       2024-08-02 16:34:06 +08:00
    http://wget.oiweb.cn/ 这种可以全站爬取
    justwe7
        16
    justwe7  
       2024-08-02 16:35:38 +08:00
    楼上老哥正解,单纯为了抓页面结构展示界面的话直接 https://pptr.dev/ 加延时等待渲染后拿代码
    luolw1998
        17
    luolw1998  
       2024-08-02 16:37:43 +08:00
    @gaoyangang #6 国外网站直接读他们的 sitemap.xml, https://www.semrush.com/sitemap.xml
    Mechanical
        18
    Mechanical  
       2024-08-02 16:43:41 +08:00
    Teleport Ultra
    tool2dx
        19
    tool2dx  
       2024-08-02 16:43:45 +08:00
    @linhongjun 以前相关页面数据都是写在 index.html 里的。现在 index 里啥都没有,数据都是 ajax 动态读取的。
    yulgang
        20
    yulgang  
       2024-08-02 16:51:07 +08:00
    Offline Explorer
    ma836323493
        21
    ma836323493  
       2024-08-02 17:05:15 +08:00
    @gaoyangang #9 #9 那在加个 playwright 模拟点击
    vituralfuture
        22
    vituralfuture  
       2024-08-02 18:44:38 +08:00 via Android
    用 scrapy 轻轻松松,之前有个课设就是做这个,我用 rust 手搓 http 协议,通过 flutter-rust-bridge 接到 dart ,dart 再用正则,xpath 等解析,把 vuejs.org 爬下来了

    当然动态资源不容易爬取
    vituralfuture
        23
    vituralfuture  
       2024-08-02 18:46:07 +08:00 via Android
    @vituralfuture 简单来说就是一个广度优先遍历,把出现在 HTML 中的链接统统加入队列,之后去爬,还要处理一下 css 中的链接
    anjv
        24
    anjv  
       2024-08-02 19:10:47 +08:00   2
    在 Linux 下,通过一个命令就可以把整个站相关的文件全部下载下来。
    wget -r -p -k -np
    参数说明:
    -r: 递归下载
    -p: 下载所有用于显示 HTML 页面的图片之类的元素
    -k: 在转换文件 X 前先将它备份为 X.orig 。
    -np: 不追溯至父目录

    wget -r -np -nd http://example.com/
    这条命令可以下载 http://example.com 网站根目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。
    wget -m -k (-H) http://www.example.com/
    该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。
    WhateverYouLike
        25
    WhateverYouLike  
       2024-08-02 19:40:09 +08:00 via iPhone
    推荐 node 的 crawlee 框架,支持无头浏览器
    littlejackyxu
        26
    littlejackyxu  
       2024-08-03 10:18:26 +08:00
    学到了新知识。
    haose
        27
    haose  
       2024-08-03 15:25:16 +08:00   1
    我说一下我最近弄的思路吧:
    - 只保存目标网站的主 html 网页
    - 通过服务端软件运行起来
    - 监听 404 情求
    - 去目标网站下载下载出来放到通用的目录
    - 运行一下网站,功能覆盖全面一下

    因为我是用这种方法拷贝的网页游戏,服务端自己分析情求自己写,正常网页的话这种思路应该也是可行的
    userdhf
        28
    userdhf  
       2024-08-03 17:46:33 +08:00
    idm 有这个功能,就是很慢
    EndlessMemory
        29
    EndlessMemory  
       2024-08-04 09:30:06 +08:00
    全站爬虫
    midpoint
        30
    midpoint  
       2024-08-04 09:53:10 +08:00   1
    Offline Explorer 或者 Teleport Ultra 都是专门用来爬网站的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5579 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 05:57 PVG 13:57 LAX 22:57 JFK 01:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86