V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gaoyangang
V2EX  ›  程序员

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

  •  
  •   gaoyangang · 137 天前 · 3620 次点击
    这是一个创建于 137 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题:

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

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

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

    当然动态资源不容易爬取
    vituralfuture
        23
    vituralfuture  
       137 天前 via Android
    @vituralfuture 简单来说就是一个广度优先遍历,把出现在 HTML 中的链接统统加入队列,之后去爬,还要处理一下 css 中的链接
    anjv
        24
    anjv  
       137 天前   ❤️ 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  
       137 天前 via iPhone
    推荐 node 的 crawlee 框架,支持无头浏览器
    littlejackyxu
        26
    littlejackyxu  
       136 天前
    学到了新知识。
    haose
        27
    haose  
       136 天前   ❤️ 1
    我说一下我最近弄的思路吧:
    - 只保存目标网站的主 html 网页
    - 通过服务端软件运行起来
    - 监听 404 情求
    - 去目标网站下载下载出来放到通用的目录
    - 运行一下网站,功能覆盖全面一下

    因为我是用这种方法拷贝的网页游戏,服务端自己分析情求自己写,正常网页的话这种思路应该也是可行的
    userdhf
        28
    userdhf  
       136 天前
    idm 有这个功能,就是很慢
    EndlessMemory
        29
    EndlessMemory  
       136 天前
    全站爬虫
    midpoint
        30
    midpoint  
       135 天前   ❤️ 1
    Offline Explorer 或者 Teleport Ultra 都是专门用来爬网站的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 01:51 · PVG 09:51 · LAX 17:51 · JFK 20:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.