《Python网络爬虫技术案例教程》教案 第4章 爬取动态加载数据.docx
PAGE6
PAGE6
PAGE7
PAGE7
课题
第4章爬取动态加载数据
课时
8课时(360min)
教学目标
知识目标:
(1)理解什么是动态加载数据
(2)掌握使用逆向分析请求页面爬取动态加载数据的方法
(3)掌握使用Selenium模拟浏览器爬取动态加载数据的方法
(4)掌握将数据存储至MySQL数据库和MongoDB数据库的方法
能力目标:
能使用逆向分析请求页面和Selenium模拟浏览器方法爬取动态加载数据,并存储数据至数据库
素质目标:
培养在数据抓取过程中的问题解决能力和创新能力,并确保行为符合网络爬虫的道德和法律规范
教学重难点
教学重点:使用逆向分析请求页面爬取动态加载数据的方法,使用Selenium模拟浏览器爬取动态加载数据的方法,将数据存储至MySQL数据库和MongoDB数据库的方法
教学难点:使用逆向分析请求页面和Selenium模拟浏览器方法爬取动态加载数据
教学方法
案例分析法、问答法、讨论法、讲授法
教学用具
电脑、投影仪、多媒体课件、教材
教学过程
主要教学内容及步骤
考勤
【教师】使用APP进行签到
【学生】班干部报请假人员及原因
问题导入
【教师】提出以下问题:
(1)什么是动态加载数据?
(2)如何使用Selenium模拟浏览器爬取动态加载数据?
【学生】聆听、思考、举手回答
传授新知
【教师】通过学生的回答引入要讲的知识,介绍动态加载数据的基础知识,逆向分析请求页面,Selenium模拟浏览器,以及保存数据至数据库的相关知识
4.1动态加载数据概述
有时用户在使用urllib库或requests库爬取网页时,爬取到的结果可能和在浏览器中看到的不一样,在浏览器中正常显示的页面数据,在爬取到的结果中却没有。这是因为urllib库或requests库发送请求返回的是网页源代码(网页源代码中不包含由JavaScript动态加载的数据),而浏览器中的页面是经过JavaScprit动态加载的。下面以京东搜索“Python”网页为例来说明什么是动态加载数据。
?【教师】利用多媒体展示“京东搜索‘Python’网页”图片(详见教材),并进行讲解
打开GoogleChrome浏览器,访问/Search?keyword=Python,向下拖动滚动条到页面底部;按“F12”键,打开浏览器的开发者工具窗口,然后选择“Elements”选项,在显示的代码中可以查看到“金融大数据分析第2版”(该页显示的搜索的最后一本图书)的HTML信息,如图所示。
?【教师】利用多媒体展示“网页源代码”图片(详见教材),并进行讲解
在GoogleChrome浏览器呈现的网页中右击,在弹出的快捷菜单中选择“查看网页源代码”选项,然后在显示的网页源代码中查找“金融大数据分析”关键字,如图所示。
可以看到,在网页源代码中没有找到“金融大数据分析”的相关内容,进一步分析发现,网页中后30本图书信息都没有包含在网页源代码中。这就说明该网页的部分元素是通过JavaScript动态加载的。
?【教师】组织学生阅读“动态网页和静态网页”的内容(详见教材),并讨论以下问题:
动态网页和静态网页有什么区别?
?【学生】阅读、思考、讨论、举手回答
?【教师】总结学生的回答
4.2逆向分析请求页面
4.2.1案例引入——爬取京东网站的数据
?【教师】播放“逆向分析请求页面”视频(详见教材),并提出以下问题:
什么是逆向分析请求页面?它在网络安全或Web开发领域中有哪些实际应用?
?【学生】观看、思考、举手回答
?【教师】总结学生回答
?【教师】通过讲解案例,帮助学生理解逆向分析请求页面
【例4-1】爬取京东搜索“Python”网页内容,输出爬取到的图书信息。
(详见教材)
4.2.2分析页面
JavaScript动态加载数据一般使用Ajax技术(Ajax指异步JavaScript和XML,是一种创建交互式、快速动态网页应用的网页开发技术),它通过在后台与服务器进行数据交换,实现网页的异步更新。在确认想要获取的网页数据是通过Ajax动态加载的,这时,可通过分析Ajax请求获取真实的URL,然后使用urllib库或requests库构造并发送同样的请求即可。
【例4-2】爬取京东搜索“Python”网页的后30本图书信息并输出。
(详见教材)
4.3Selenium模拟浏览器
4.3.1案例引入——Selenium模拟浏览器访问淘宝网站
?【教师】通过讲解案例,帮助学生掌握Selenium模拟浏览器的使用方法
【例4-3】使用Selenium模拟浏览器访问淘宝首页,输出爬取到的HTML源代码。
(详见教材)
4.3.2Selenium简介
实际动态网页中,很多Ajax请求的