• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gaoyangang
V2EX  ›  程序员

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

  •  
  •   gaoyangang · Aug 2, 2024 · 6007 views
    This topic created in 823 days ago, the information mentioned may be changed or developed.

    如题:

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

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

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

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

    因为我是用这种方法拷贝的网页游戏,服务端自己分析情求自己写,正常网页的话这种思路应该也是可行的
    userdhf
    userdhf
    Aug 3, 2024
    28
    idm 有这个功能,就是很慢
    EndlessMemory
    EndlessMemory
    Aug 4, 2024
    29
    全站爬虫
    midpoint
    midpoint
    Aug 4, 2024❤️1
    30
    Offline Explorer 或者 Teleport Ultra 都是专门用来爬网站的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1369 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 191ms · UTC 22:16 · PVG 06:16 · LAX 14:16 · JFK 17:16
    ♥ Do have faith in what you're doing.