随笔 - 214  文章 - 12  评论 - 40  阅读 - 38万

Scrapy爬取动态内容(一)Splash方案

一、方案:
之前我们学习的内容都是抓取静态页面,每次请求,它的网页全部信息将会一次呈现出来。 但是,像比如一些购物网站,他们的商品信息都是js加载出来的,并且会有ajax异步加载。像这样的情况,直接使用scrapy的Request请求是拿不到我们想要的信息的,解决的方法就是使用selenium或者scrapy-splash。
 
差别:
selenium是浏览器测试自动化工具,很容易完成鼠标点击,翻页等动作,缺点是一次只能加载一个页面,无法异步渲染页面,也就限制了selenium爬虫的抓取效率。
splash可以实现异步渲染页面,可以同时渲染几个页面。缺点是在页面点击,,模拟登陆方面没有selenium灵活。
 
最初选用了splash作为解决方案。
经过一圈折腾,感觉使用splash的成本有点高,又回到了Selenium方案上来。
 
二、Scrapy-splash环境
https://splash.readthedocs.io/en/stable/
https://splash.readthedocs.io/en/latest/install.html
 
1、安装docker
参考本地文章《Docker学习》,Mac下双击运行Docker Quickstart Terminal确认安装完成。
  
2、安装splash
(1) 拉取镜像:
mac需要双击运行Docker Quickstart Terminal
 
输入以下内容
docker pull scrapinghub/splash
 
(2) 启动Splash
docker run -d -p 123.56.71.2:8050:8050 scrapinghub/splash
docker run --name splash -d -p 8050:8050 scrapinghub/splash
docker run -d -p 8050:8050 scrapinghub/splash
docker run -d -p 123.56.71.2:8050:8050 scrapinghub/splash
 
这个命令就是在计算机的123.56.71.2:8050端口启动Splash渲染服务,转发到容器8050端口,-d表示在后台运行
也可以加—name指定容器名称
 
Docker操作
systemctl enable/start/restart/stop  docker
 
容器操作
docker ps 查看当前启动的容器
docker stop/kill 容器ID或容器名
docker restart 容器ID或容器名
 
如果端口或网络访问有问题,可以先重启容器然后再启动Splash
 
(3)打开浏览器,输入123.56.71.2:8050会看到首界面。可以在输入框输入任意的网址,点击后面的Render me! 来查看渲染之后的样子。
 
三、集成到Scrapy中
https://www.e-learn.cn/content/qita/800748
 
1、安装scrapy-splash
pip install scrapy-splash
 
2、使用
参考文章
https://www.cnblogs.com/palace/p/9628372.html
 
Splash是通过Lua脚本来控制了页面的加载过程, 加载过程完全模拟浏览器,可以执行某些特定js脚本或者方法
 
Scrapy-splash的设置
scrapy-splash的请求头和代理参数设置
https://blog.csdn.net/mouday/article/details/82151257
 
这里发现一个问题,就是SplashRequest只能等待固定的时长,不能根据需要的内容是否已经记载完成来判断。
发现一个解决方案:准备继续深入研究
splash 实现类似selenium的WebDriverWait
https://www.codercto.com/a/40904.html
 
最终之所以放弃Splash方案,是因为这种的解析效率太低了,有时候一个网页需要十几秒才能结束等待,所以最终不得不放弃。
posted on   麦克煎蛋  阅读(628)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示