Splash的爬虫应用(一)

简介: Splash的爬虫应用(一)

Splash的爬虫应用
Splash是一个JavaScript渲染服务,它是一个带有HTTP API的轻型Web浏览器。Python可以通过HTTP API调用Splash中的一些方法实现对页面的渲染工作,同时它还可以使用Lua语言实现页面的渲染,所以使用Splash同样可以实现动态渲染页面的爬取。其实它与selenium所实现的功能都相同的,只不过实现的过程和原理有所不同。

搭建Splash环境(Mac系统)
搭建Splash环境需要docker命令进行安装,所以要先安装Docker,然后通过Docker 命令安装Splash,再启动Splash服务,才可以正常使用Splash。搭建Splash环境的具体步骤如下:

1、安装Docker
在浏览器中打开Docker的官网地址(https://www.docker.com/),注册并登录账号,然后根据自己需求下载对应系统版本的Docker,本人电脑系统是macOS,如下图:
image.png

所以登录官网下载。如下图:
image.png

下载之后,正常安装即可。

或许第二种方法,进入mac命令行,但不是root身份,用brew install 安装也可以。

Last login: Thu Feb 10 15:59:45 on ttys000
liuxiaowei@MacBookAir ~ % brew install docker
AI 代码解读

说 明

第二种方法的前提需要先安装brew,这里不再赘述,仅供参考。

2、安装及启动Splash
安装和启动Splash非常简单,直接执行如下命令:

# 启动DockerMacBookAir:~ root#  docker run -d -p 8050:8050 scrapinghub/splash
AI 代码解读

image.png

服务启动成功以后,在浏览器中输入"http://localhost:8050",本人利用的是selenium自动启动Splash服务。代码如下:

#_*_coding:utf-8_*_
# 作者      :liuxiaowei
# 创建时间   :2/10/22 4:32 PM
# 文件      :使用selenium启动Splash服务.py
# IDEPyCharm

# 导入模块
from selenium import webdriver
import time

# 指定url
url = 'http://localhost:8050/'
# 设定driver路径
execute_path = '../使用selenium爬取动态加载的信息/chromedriver'
# 创建browser
browser = webdriver.Chrome(executable_path=execute_path)
# 打开splash测试页面
browser.get(url)

time.sleep(10)
browser.quit()
AI 代码解读

程序运行结果如下:
image.png

在Splash测试页面中,右侧的代码是默认生成的Lua脚本,就像所有编程语言中的"Hello World"一样。接下来可以在右侧上方的输入框内输入一个网址,本例使用百度网址(https://www.baidu.com)为例,然后单击render me!按钮。将显示结果,如下图:
image.png

**注 意:**本人用的是selenium修改Splash测试页的输入框缺省值,修改为百度网页。同样得到如上图结果,代码如下:

#_*_coding:utf-8_*_
# 作者      :liuxiaowei
# 创建时间   :2/10/22 4:32 PM
# 文件      :使用selenium启动Splash服务.py
# IDEPyCharm

# 导入模块
from selenium import webdriver
from selenium.webdriver.common.by import By
# 导入显式等待模块
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 指定url
url = 'http://localhost:8050/'
# 设定driver路径
execute_path = '../使用selenium爬取动态加载的信息/chromedriver'
# 创建browser
browser = webdriver.Chrome(executable_path=execute_path)
# 打开splash测试页面
browser.get(url)

# 找到splash测试页面的input框和render按钮
inputTag = browser.find_element_by_xpath('//input[@name="url"]')
render_Btn = browser.find_element_by_xpath('//button[@type="submit"]')

# 最关键是如下修改输入框属性值,我查了很多资料才搞定,也稍有点成就感
# 就是利用下面的脚本"argugments[0].value='https://www.baidu.com';"
# 因为Splash测试页的输入框的缺省值是http://google.com/,不能用send_key赋值,只能修改

browser.execute_script("arguments[0].value='https://www.baidu.com';", inputTag)
render_Btn.click()

# 下面利用显示等待实现网页彻底刷新
try:
    element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.title, '百度一下,你就知道'))
    )
finally:
    browser.quit()
AI 代码解读

说 明:上图的内容是通过Lua代码生成的,其中包含渲染截图、HAR加载统计数据、网页源代码。

注 意:

如果电脑 关机或重启后,再次使用Splash时需要重新执行“docker run -p 8050:8050 scrapinghub/splsh“命令启动Splash服务。

接下文: Splash的爬虫应用(二)https://developer.aliyun.com/article/1617945

目录
打赏
0
0
0
0
218
分享
相关文章
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
194 6
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
249 66
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
155 4
在Scrapy爬虫中应用Crawlera进行反爬虫策略
在Scrapy爬虫中应用Crawlera进行反爬虫策略
Python爬虫技术基础与应用场景详解
本文介绍了爬虫技术的基本概念、原理及应用场景,包括数据收集、价格监测、竞品分析和搜索引擎优化等。通过一个实战案例展示了如何使用Python爬取电商网站的商品信息。强调了在使用爬虫技术时需遵守法律法规和道德规范,确保数据抓取的合法性和合规性。
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Rust在网络爬虫中的应用与实践:探索内存安全与并发处理的奥秘
【8月更文挑战第31天】网络爬虫是自动化程序,用于从互联网抓取数据。随着互联网的发展,构建高效、安全的爬虫成为热点。Rust语言凭借内存安全和高性能特点,在此领域展现出巨大潜力。本文探讨Rust如何通过所有权、借用及生命周期机制保障内存安全;利用`async/await`模型和`tokio`运行时处理并发请求;借助WebAssembly技术处理动态内容;并使用`reqwest`和`js-sys`库解析CSS和JavaScript,确保代码的安全性和可维护性。未来,Rust将在网络爬虫领域扮演更重要角色。
107 1
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
306 4