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

请教一个爬虫技术

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

    有个需求:想要根据用户给的网址链接,爬取链接内容里的所有图片、视频。如果是用后端服务端的话,高迸发情况下肯定有性能问题,后端渲染页面也很慢,得渲染完毕才能返回结果。 我有个想法:因为是移动客户端,我可不可以调用移动端的 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,大量分析成本太高,这种简单分析不值得
    4BVL25L90W260T9U
        6
    4BVL25L90W260T9U  
       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. 其他反爬技术我就不说了
    awsl2333
        12
    awsl2333  
       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     Solana     2836 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:46 PVG 21:46 LAX 05:46 JFK 08:46
    Do have faith in what you're doing.
    ubao msn 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