目录
- 1. 无头浏览器
- 2. 分析被爬取数据的网页结构
- 3. 完整代码
- 总结
欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
1. 无头浏览器
-
一般性的selenium会打开浏览器页面,展示图形化页面给我们看,我们都应该知道命令行式的程序肯定比这种渲染图形化界面的程序快速高效。为了一定程度上缓解selenium慢的问题,我们可以采用无头浏览器。
-
无头浏览器值。“无头浏览器”的“无头”元素与它们确实缺少一个关键元素(即图形用户界面(GUI))有关。这使得我们可以做到后台的静默运行中完成爬虫。
-
优点:快捷高效
-
缺点:编写代码和调试更加困难(没有图形化界面的痛苦)
-
适用场景:已经确保能够成功爬取数据,为了提高效率,可以使用无头浏览器。
2. 分析被爬取数据的网页结构
艺恩数据
https://www.endata.com.cn/BoxOffice/BO/Year/index.html
- 年份下拉框
select
元素的xpath//*[@id="OptionDate"]
定位
- 借助 select支持库将select元素转为select对象
sel = Select(sel_el)# 对元素进行包装, 包装成下拉菜单对象
- 抓取每个年份的数据table xpath定位
//*[@id="TableList"]/table
i就是每一个下拉框选项的索引位置 把5换成len(sel.options)表示遍历所有年份 这里是5表示最近4年【0,5)
# for i in range(len(sel.options)):#所有年份的数据
for i in range(5):#最近【0,5)年的数据 也就是 [2023-2019]
sel.select_by_index(i) # 遍历每一年,按照索引进行切换
time.sleep(2)
table = web.find_element_by_xpath('//*[@id="TableList"]/table')
print(table.text) # 打印所有文本信息
print("===================================")
3. 完整代码
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
import time
# 创建一个参数对象,用来控制chrome以无界面模式打开(可以视为固定写法)
opt = Options()#新建参数对象
opt.add_argument("--headless")#无头
opt.add_argument("--disbale-gpu")#无gpu图形化界面
web = Chrome(options=opt) # 把参数配置设置到浏览器中
web.get("https://www.endata.com.cn/BoxOffice/BO/Year/index.html")
time.sleep(2)
sel_el = web.find_element_by_xpath('//*[@id="OptionDate"]')# 定位到下拉列表
sel = Select(sel_el)# 对元素进行包装, 包装成下拉菜单对象
# print(sel.options) #打印所有的下拉选项
# 让浏览器进行调整选项
for i in range(5): # i就是每一个下拉框选项的索引位置 把5换成len(sel.options)表示遍历所有年份 这里是5表示最近4年【0,5)
sel.select_by_index(i) # 遍历每一年,按照索引进行切换
time.sleep(2)
table = web.find_element_by_xpath('//*[@id="TableList"]/table')
print(table.text) # 打印所有文本信息
print("===================================")
print("运行完毕. ")
# 拿到页面代码Elements(经过数据加载以及js执行之后的结果的html内容)
print(web.page_source)
web.close()#注意关闭连接,如果不关闭可能会导致有多个连接,进而容易封禁
print("关闭连接")
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2023 mzh
Crated:2023-3-1
欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』