现在爬虫对付脚本构造的网页还有什么方法,除了 selenium

2021-04-03 17:04:20 +08:00
 imn1
前情,爬 baidu image,搜些图片玩玩 learning,发现不少轮子都废了,查了下页面源码,基本是 js 输出数据
之前就遇到 douban movie 用 js 构造问题,还好爬的东西不多,不急切,弄个 selenium 扔后台降低频率跑就是了

现在感觉越来越多网页 js 的作用很大,总以调起浏览器方式作用不大,也不好玩(没满足感🐶)
看看现在有什么新技能,可以纯命令行完成
5082 次点击
所在节点    Python
21 条回复
3dwelcome
2021-04-03 17:11:58 +08:00
用自定义 cef 框架导出渲染后的 render dom tree 。
首先要明确一点,一些网页用的是 js 返回数据,有些例如 twitter 是 websocket 构建页面,你不上 js 解析执行引擎,根本就没办法完整运行页面。
你总要带一个 js 和 layout 引擎处理,要不然只有看着返回的 js 代码发呆了。
dsg001
2021-04-03 17:35:25 +08:00
js 如果不加密,直接爬接口

不好解密就上 headless chrome
EricXuu
2021-04-03 17:39:16 +08:00
没满足感就自己造轮子🐶
LeeReamond
2021-04-03 17:45:31 +08:00
爬虫爬的好,牢饭吃到饱。没什么意义,现在框架写出的网站都是前端渲染前端路由,不跑无头你能拿到什么数据。然而只要跑无头基本就获得与正常用户一样的使用体验,所以比起爬虫我倒是更关心如何反爬。。
imn1
2021-04-03 18:21:07 +08:00
@LeeReamond #4
你理解的是商业数据,我只是想把重复劳动机器自动化
例如要找不同类型车辆的图片,手动一天能存一千张已经算是忍耐力惊人了,但换成自动化工作,一万也不是问题,更何况这种搜图方式,图片都是分布在不同网站,引擎只是获取链接,并不会针对特定网站高频请求
coolair
2021-04-03 18:26:36 +08:00
splash
LokiSharp
2021-04-03 20:24:12 +08:00
直接抓接口爬,更简单了
omph
2021-04-03 20:56:32 +08:00
微信公众号文章,即使有永久链接,都限爬了
有什么简单的方法没?
XIU2
2021-04-03 21:28:31 +08:00
我平时会给我经常访问的网站加上 自动无缝翻页(油猴脚本,提取下一页部分内容并插入到当前页面底部),结果接连遇到了好几个 JS 动态生成的网页,搞得我很难受。。。

网上搜了一圈,基本上只能当场渲染获得成品内容,没有什么简单的方案。。。
rekulas
2021-04-03 21:29:17 +08:00
@dsg001 headless 使用的也是 webdriver 和 selenium 一样

路过打击一下楼主
selenium 也并不万能,因为发现 webdriver 会向浏览器写入多项特征数据导致能够被识别,如果目标网站做了对应的防御,爬取难度会非常大,而且这些特征有些是无法移除或修改的,例如 navigator.webdriver,这点深受使用者吐槽,老外都骂 google 做了婊子还要立牌坊,不过 google 应该是为了保证网站的知情权吧

已经有开发者发起挑战,宣称将基于 chromium 开发无法检测的 webdriver 浏览器
ysmood
2021-04-03 23:05:14 +08:00
lqzhgood
2021-04-03 23:36:19 +08:00
从 headless 的被防爬角度我提个思路~
直接 chrome + 插件,就可以完全避开 webdriver 的特征了
yucongo
2021-04-03 23:45:59 +08:00
playwright, 爬虫新利器
LeeReamond
2021-04-04 00:08:18 +08:00
@ysmood 学到了一个好用的反爬方法,感谢
ysmood
2021-04-04 00:15:05 +08:00
@yucongo 从性能和设计可以对比下 rod 和 playwright,这里有详细说明: https://go-rod.github.io/i18n/zh-CN/#/why-rod?id=puppeteer
omph
2021-04-04 08:09:36 +08:00
@ysmood #15 rod 有没有命令行的版本?这样可以快速做一些小任务,无需 go 开发环境 😃
ysmood
2021-04-04 08:39:46 +08:00
@omph 有一个实验项目,我倒是很想指导一个开发者做相关的开发 https://github.com/go-rod/wayang

我个人时间比较有限,欢迎有兴趣的同学加入,很早之前就开了 issue 了 https://github.com/go-rod/rod/issues/333
imn1
2021-04-04 17:14:27 +08:00
谢各位,暂时用 PyQt5.QWebEngineView,效果可以接受
allanpk716
2021-04-05 00:56:13 +08:00
@ysmood 刚用你这项目写了下爬虫,挺不错的,比之前用的其他 go 的库好用很多。
rekulas
2021-04-05 09:14:33 +08:00
@ysmood 感谢大佬提供的 rod,以前试过挺好用的
不过 rod 是基于 devtools ?如果是那仍然可以被检测到,要破解也没有楼上提到的那么容易,除非能够修改浏览器内核
空了我会再测试一番

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

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

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

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

© 2021 V2EX