请教一个爬虫技术

2023-04-25 20:07:17 +08:00
 lufeng666

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

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

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

另外你说的那个监听的,是不是指 fiddler 这种?
xchaoinfo
2023-04-25 23:21:29 +08:00
mitmproxy
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
2023-04-25 23:35:58 +08:00
整段话看下来,OP 应该不怎么了解爬虫现状
感觉在描述 html4+css2 时代的网页

1. 现在的网站是能检测适应移动端和桌面端的,移动端 webview 比桌面端更难抓包
2. 桌面端也有“webview”,你搜搜 cef
3. 现在视频站基本都是流播放,抓 url 只是个“入口”,人家又不是傻子,肯定有大量鉴权,不然任何人随便 copy 个网址,贴到自己的网站就能盗链视频了?
4. 没有好用的项目是因为发布方在不断变换,例如 google 图片搜索,不久就变化一次,爬虫代码就要重新分析一次,项目如果不能及时跟进更新,过没多久就废了,没人用了
5. 其他反爬技术我就不说了
liuhai233
2023-04-25 23:40:39 +08:00
@gzlock 来用 playwright ,我是 playwright 布道师
gzlock
2023-04-26 02:08:10 +08:00
@liuhai233 #12 可惜了 dart 上只有 puppeteer 的 package ,没有 playwright
Finnn
2023-04-26 10:16:06 +08:00
如果有 puppeteer 不能解决的爬虫需求, 那就是不现实的需求
xslong
2023-04-26 10:55:19 +08:00
现在的网页基本都是动态渲染的,如果没办法直接破解接口可以用 selenium 控制渲染网页,页面都渲染完成后再解析 DOM 提取想到的信息。应该可以设置一些头信息模拟为 webview ,没实际操作过
ShuoHui
2023-04-26 11:48:03 +08:00
单一页面还是好多种页面啊,单一页面就好办了试一下就好,几种方案试一下,能提取地址的话我觉得还是提取地址比较方便。。我做过每次发过来页面都不太一样的做的头都大了。
Yeen
2023-04-26 15:19:42 +08:00
终极解决方案:无头浏览器抓取方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/935459

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX