V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lufeng666
V2EX  ›  程序员

请教一个爬虫技术

  •  
  •   lufeng666 · 2023-04-25 20:07:17 +08:00 · 2713 次点击
    这是一个创建于 576 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个需求:想要根据用户给的网址链接,爬取链接内容里的所有图片、视频。如果是用后端服务端的话,高迸发情况下肯定有性能问题,后端渲染页面也很慢,得渲染完毕才能返回结果。 我有个想法:因为是移动客户端,我可不可以调用移动端的 webview 组件,在前端加载完毕页面后,直接前端用正则找图片、视频地址?或者有没有一些三方插件可以跟 chrome 的 F12 开发者模式一样,列出所有的网络请求文件,我只需要过滤展示图片、视频类型的请求就行了。 结果:我 github 上翻阅也没找好用的项目,有啥好用的方案可以获取网址对应的图片、视频没?或者实现类似功能的开源项目也可以。 最后:最近 chatgpt 很火,能通过 chatgpt 实现吗?没有研究过不知道是否可行。

    17 条回复    2023-04-26 15:19:42 +08:00
    IvanLi127
        1
    IvanLi127  
       2023-04-25 20:18:45 +08:00 via Android
    就一个页面?这也不用爬呀,在 webview 里加载完后直接把 img 和 video 内容存下来。demo 版本就有了
    lufeng666
        2
    lufeng666  
    OP
       2023-04-25 20:40:13 +08:00
    @IvanLi127 提取估计比较难搞,正则匹配不好做。
    gzlock
        3
    gzlock  
       2023-04-25 21:51:31 +08:00
    这需求不就是在找 puppeteer 么
    kingfalse
        4
    kingfalse  
       2023-04-25 21:57:10 +08:00 via Android   ❤️ 1
    jxbrowser ,Java 接入 chrome 浏览器,有网络接口,每次请求的地址,请求头,返回头,返回体都可以得到,完美解决你的需求
    em70
        5
    em70  
       2023-04-25 22:03:43 +08:00
    1.不要老想走捷径,其实更浪费时间.
    2.首先分析页面是否是动态加载的,HTML 能否拿到全部图片,视频地址.
    3.如果拿不到服务器走无头浏览器,监听日志拿到文件地址,解决问题是第一步,不考虑并发,性能后面再优化
    4.chatgpt 可以帮你分析监听日志,但容量只有 4K,大量分析成本太高,这种简单分析不值得
    ospider
        6
    ospider  
       2023-04-25 22:06:47 +08:00   ❤️ 1
    你这口音有点重啊……高迸发😂
    IvanLi127
        7
    IvanLi127  
       2023-04-25 22:49:19 +08:00
    @lufeng666 欸,我想得太简单了?

    https://imgur.com/a/wlFNCp9
    XxxxD
        8
    XxxxD  
       2023-04-25 23:19:25 +08:00
    不是很懂,页面如果有图片或者视频地址,不是可以解析地址下载么?
    如果是动态加载,那就找规律找到正确的地址,实在不行就上无头浏览器了

    另外你说的那个监听的,是不是指 fiddler 这种?
    xchaoinfo
        9
    xchaoinfo  
       2023-04-25 23:21:29 +08:00 via Android
    mitmproxy
    duan602728596
        10
    duan602728596  
       2023-04-25 23:31:17 +08:00
    前端 request 返回 html ,拿 new DOMParser().parseFromString('<div></div>', 'text/html')原生 js 解析
    后端 request 返回 html ,拿 jsdom 解析,api 和 DOM api 几乎差不多
    想用 playwight 拦截静态资源也不是不可以,就是费流量
    NoOneNoBody
        11
    NoOneNoBody  
       2023-04-25 23:35:58 +08:00
    整段话看下来,OP 应该不怎么了解爬虫现状
    感觉在描述 html4+css2 时代的网页

    1. 现在的网站是能检测适应移动端和桌面端的,移动端 webview 比桌面端更难抓包
    2. 桌面端也有“webview”,你搜搜 cef
    3. 现在视频站基本都是流播放,抓 url 只是个“入口”,人家又不是傻子,肯定有大量鉴权,不然任何人随便 copy 个网址,贴到自己的网站就能盗链视频了?
    4. 没有好用的项目是因为发布方在不断变换,例如 google 图片搜索,不久就变化一次,爬虫代码就要重新分析一次,项目如果不能及时跟进更新,过没多久就废了,没人用了
    5. 其他反爬技术我就不说了
    liuhai233
        12
    liuhai233  
       2023-04-25 23:40:39 +08:00
    @gzlock 来用 playwright ,我是 playwright 布道师
    gzlock
        13
    gzlock  
       2023-04-26 02:08:10 +08:00   ❤️ 1
    @liuhai233 #12 可惜了 dart 上只有 puppeteer 的 package ,没有 playwright
    Finnn
        14
    Finnn  
       2023-04-26 10:16:06 +08:00
    如果有 puppeteer 不能解决的爬虫需求, 那就是不现实的需求
    xslong
        15
    xslong  
       2023-04-26 10:55:19 +08:00
    现在的网页基本都是动态渲染的,如果没办法直接破解接口可以用 selenium 控制渲染网页,页面都渲染完成后再解析 DOM 提取想到的信息。应该可以设置一些头信息模拟为 webview ,没实际操作过
    ShuoHui
        16
    ShuoHui  
       2023-04-26 11:48:03 +08:00
    单一页面还是好多种页面啊,单一页面就好办了试一下就好,几种方案试一下,能提取地址的话我觉得还是提取地址比较方便。。我做过每次发过来页面都不太一样的做的头都大了。
    Yeen
        17
    Yeen  
       2023-04-26 15:19:42 +08:00
    终极解决方案:无头浏览器抓取方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3325 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:17 · PVG 08:17 · LAX 16:17 · JFK 19:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.