《数据采集》课程教学大纲
一、课程基本信息
课程代码:18100053
课程名称:数据采集
英文名称:Data Acquisition
课程类别:专业课
学时:总学时48,其中理论讲授30学时,实验18学时
学 分:3
适用对象:数据科学与大数据技术、大数据管理与应用
考核方式:考试
先修课程:无
二、课程简介
中文简介:本课程讲授数据采集的基础知识,即利用网络爬虫收集互联网上的海量数据,主要内容包括Web的工作原理、HTML语言基础、使用标准库urllib和第三方库requets、selenium等创建爬虫、使用scrapy框架构建复杂的爬虫、抓取表单和javaScript执行之后的数据、采取的反反爬虫的措施,以及在爬虫过程要遵守道德和法律的约束,使学生在学完本课程后,即可利用爬虫收集互联网上的海量数据。通过学习本课程,使学生掌握Python爬虫的基本思想和技术,为后续的课程(比如大数据分析、机器学习等)打下良好基础。更重要的是,培养学生应用计算机解决和处理实际问题的思维方法与基本编程能力。
英文简介:This course teaches the basic knowledge of data collection, that is, using web crawler to collect massive data on the Internet, including the working principle of web, the basis of HTML language, using the standard library urllib and the third-party library such as requests, selenium to create crawlers, using the framework Scrapy to build complex crawlers, grabbing the data after submitting forms and executing JavaScript, and taking anti crawler measures, and in the process of crawler to abide by the moral and legal constraints, so that students can use crawler to collect massive data on the Internet after learning this course.By studying this course, students can master the basic idea and technology of Python crawler, and lay a good foundation for subsequent courses (such as big data analysis, machine learning, etc.). What's more important is to train students' thinking method and basic programming ability to solve and deal with practical problems with computer.
三、课程性质与教学目的
课程性质:专业基础必修课。
教学目的:
1. 知识目标:学习Python网络爬虫程序的基本结构,网络连接和解析网页过程、爬虫框架和反反爬虫的基础知识;
2. 技能目标:熟练利用Python标准库和第三方库创建爬虫,使用不同策略采集互联网的数据,要求编写有一定复杂度的、规范的、符合算法设计大型爬虫程序;
3. 思政育人目标:将知识传授、能力培养、价值塑造三者相结合,育才与育人合二为一,将立德树人根本任务落到实处。对学生进行科学思维方法的训练和科学伦理的教育,增强学生的法治意识和职业道德,培养学生探索未知、追求真理、诚实守信、开拓创新的职业品格和行为习惯。
四、教学内容及要求
第一章 创建爬虫
目的与要求
了解Web的工作原理、HTTP协议;
了解网页和网页文件的字符编码;
网络爬虫的知识框架体系;
了解页面解析工具BeautifulSoup;
掌握Python爬虫采集数据的一般过程。
教学内容
第一节 网络连接
主要内容
Web的工作原理;
如何使用urllib库获取网页;
基本概念和知识点
Web的请求和响应;
urlopen()函数的作用。
问题与应用(能力要求)
编写和运行一个简单的爬虫。
第二节 BeautifulSoup简介
主要内容
安装BeautifulSoup;
运行BeautifulSoup;
可靠的网络连接以及异常处理。
基本概念和知识点
HTML标签;
常用解析器;
异常处理。
问题与应用(能力要求)
编写一个有异常处理的爬虫程序。
课程思政元素融入主要体现:平时在浏览网页时,觉得是一件自然而然的事情。但学生从没想过其背后的原理,通过接受web的工作原理,告诉学生学习需要有好奇心,才能驱动学习的兴趣,追求真理。
思考与实践
思考:在获取网页和解析网页过程中,可能遇到的异常有哪些?
实践:编写一个简单的爬虫程序,可以分别处理不同的异常情况。
教学方法与手段
本章主要采用课堂教学、多媒体教学、网络教学的方式将获取网页的基础知识和原理传授给学生,同时让学生理解和思考日常浏览网页背后的原理和技术。
第二章 复杂HTML解析
目的与要求
了解BeautifulSoup下的几种类型的对象;
理解BeautifulSoup的导航;
掌握BeautifulSoup的find_all()和find()函数的用法;
掌握BeautifulSoup的CSS选择器;
掌握Python正则表达式。
教学内容
第一节 网页解析
主要内容
BeautifulSoup的find()和find_all()函数的使用;
BeautifulSoup下的几种类型的对象;
BeautifulSoup导航树;
基本概念和知识点
BeautifulSoup对象、Tag对象、NavigableString对象、Comment对象;
导航树。
问题与应用(能力要求)
熟练掌握使用BeautifulSoup进行网页解析。
第二节 Python正则表达式
主要内容
正则字符串;
常用正则表达式符号;
预定义类。
基本概念和知识点
正则表达式;
正则字符串。
问题与应用(能力要求)
掌握使用 Python正则表达式匹配字符串。
第三节 正则表达式、Lambda表达式和BeautifulSoup
主要内容
正则表达式和find_all()函数的结合;
Lambda表达式和find_all()函数的结合;
获取标签属性。
基本概念和知识点
过滤器;
标签属性。
问题与应用(能力要求)
正确地使用BeautifulSoup的过滤器。
课程思政元素融入主要体现:在字符串匹配的操作中使用正则表达式,只有满足规则的字符串才能匹配成功,否则匹配失败返回空的结果。从正则表达式的实例中,让学生体会到遵守规则,才能接近成功,否则一无所获。
思考与实践
思考find_all()函数有哪些形参,分别可以用哪些过滤器;
实践:使用urllib库获取任意一个网页,利用BeautifulSop从网页中提取所需要的数据。
教学方法与手段
本章主要采用课堂教学、多媒体教学、实验教学的方式将BeautifulSoup网页解析的技术传授给学生。
第三章 编写网络爬虫
目的与要求
了解单个域名的概念;
掌握采集单个页面下的链接;
掌握采集整个网站的链接及数据;
掌握采集互联网上的链接及数据。
教学内容
第一节 遍历单个域名
主要内容
单个域名链接的特点;
特定网页类型的链接规则;
基本概念和知识点
单个域名;
链接规则。
问题与应用(能力要求)
掌握抓取单个域名网页的所有链接。
第二节 抓取整个网站
主要内容
遍历整个网站的网络爬虫的作用;
链接去重;
采集整个网站的数据。
基本概念和知识点
浅网、深网和暗网;
深度优先策略——递归。
问题与应用(能力要求)
掌握收集整个网站的链接以及网页数据。
第三节 在互联网上抓取
主要内容
从互联网上抓取外链;
在一个网站上抓取内链;
通过抓取外链和内链的组合从互联网上抓取数据;
基本概念和知识点
内链;
外链。
问题与应用(能力要求)
掌握内链和外链的概念,以此编写爬虫抓取互联网上的数据。
课程思政元素融入主要体现:首先从抓取单个网页开始,再抓取整个网站的数据,最后到互联网上抓取数据,通过循循善诱的引导学生,培养学生追根问题的钻研精神和精益求精的工匠精神。
思考与实践
思考:如何区分内链和外链,链接的规则如何表达?
实践:从任意一个网页开始,抓取互联网的链接。
教学方法与手段
本章主要采用课堂演示、多媒体、实验教学的方式将递进式地讲授从单个网页,到整个网站,最后到整个互联网上抓取数据。
第四章 网络爬虫模型
目的与要求
明确采集数据的需求;
掌握编写能处理不同网站结构的爬虫;
掌握结构化爬虫的编写。
教学内容
第一节 规划和定义对象
主要内容
明确需要什么数据;
建立对象的数据模型;
基本概念和知识点
对象;
数据模型。
问题与应用(能力要求)
学会在抓取数据之前,思考和建立数据模型。
第二节 处理不同的网站布局
主要内容
(1)将对象具有的状态和行为进行抽象;
(2)将爬虫涉及的计算过程进行抽象化;
2. 基本概念和知识点
(1)对象的属性和行为;
(2)过程的抽象;
3.问题与应用(能力要求)
通过对象和过程的抽象,建立面向不同网站结构的爬虫。
第三节 结构化爬虫
1.主要内容
(1)通过搜索抓取网站;
(2)通过链接抓取网站;
(3)抓取多种类型的页面。
2. 基本概念和知识点
(1)搜索链接;
(2)搜索主题;
(3)结果链接;
(4)绝对链接和相对链接。
3.问题与应用(能力要求)
掌握两种不同类爬虫的基本思路和特点。
课程思政元素融入主要体现:对需求中的数据的抽象和抓取数据过程的抽象,从而编写出具有高度结构化的爬虫,在这个过程中,培养学生从复杂的现象看到本质的能力、培养抽象思维的能力。
思考与实践
思考:如何创建一个结构化爬虫,从哪里入手?
实践:在三联周刊网站,实现这两种类型的爬虫?
教学方法与手段
本章主要采用课堂教学、多媒体和实验教学的方式将网络爬虫的不同模型的知识传授给学生。
第五章 Scrapy
目的与要求
了解Scrapy框架的组成部分;
了解Scrapy框架的工作原理;
了解Scrapy框架的日志管理;
掌握使用Scrapy框架创建简易爬虫;
掌握使用Scrapy框架创建带有规则的爬虫;
掌握使用Scrapy框架创建Item和Item管线组件实现异步数据处理。
教学内容
第一节 创建一个简易爬虫
主要内容
安装Scrapy;
创建一个Scrapy的项目;
创建一个简易爬虫;
运行一个简易爬虫。
基本概念和知识点
Scrapy框架;
简易爬虫;
创建项目、创建爬虫与运行爬虫。
问题与应用(能力要求)
掌握一个简易爬虫的创建和运行。
第二节 带有规则的抓取
主要内容
创建带有规则爬虫的命令;
基本概念和知识点
起始url;
rules列表
rule对象。
问题与应用(能力要求)
理解规则对象和规则列表,以及过滤的过程。
第三节 创建和输出Item
主要内容
创建Item;
输出Item。
基本概念和知识点
Item对象;
Item的作用。
问题与应用(能力要求)
掌握根据数据模型创建Item,并输出到不同类型的文件。
第四节 Item管线组件和Scrapy日志管理
主要内容
Item管线组件的作用;
Item管线组件创建过程;
Scrapy日志管理。
基本概念和知识点
Item管线组件;
异步数据处理。
问题与应用(能力要求)
掌握Item管线组件的创建方式,提高爬虫的运行效率。
课程思政元素融入主要体现:Scrapy是一个网络爬虫的开源框架,通过该框架可以迅速搭建一个比较复杂的爬虫,同时简化很多编程的代码和步骤。从中让学生领悟到:搭建起一个框架和体系的重要性,引导学生发挥聪明才智写出高质量的代码,去开源社区做贡献,成为对社会有用的人才。
思考与实践
思考:如何使用Scrapy框架创建通过链接抓取网站数据?
实践:使用Scrapy框架爬取百度百科词条的数据。
教学方法与手段
本章主要采用课堂演示、多媒体、实验等教学方式将Scrapy框架的知识点传授给学生。
第六章 穿越网页表单与登录窗口进行抓取
目的与要求
了解网页表单的结构;
掌握网页表单提交的字段;
掌握使用requests库提交网页表单的过程;
掌握不同类型的网页表单提交的特点;
掌握爬虫处理cookie的方法;
教学内容
第一节 提交一个基本表单
主要内容
网页表单的两个关键字段;
使用requests库提交文本框表单。
基本概念和知识点
网页表单;
输入字段。
问题与应用(能力要求)
掌握集合处理的各种方法。
第二节 单选按钮、复选框和其他输入
主要内容
编写爬虫提交单选按钮、复选框等表单;
编写爬虫提交下拉列表表单;
基本概念和知识点
单选按钮表单的特点;
复选框表单的特点。
问题与应用(能力要求)
理解三种序列类型的区别。
第三节 提交文件和图像
主要内容
文件上传表单形式;
文件或图像提交字段及其字段值;
基本概念和知识点
文件表单提交的字段值形式。
问题与应用(能力要求)
掌握文件或图像表单提交的方式。
第四节 处理登录和cookie
主要内容
cookie的工作原理;
两种方式处理cookie;
基本概念和知识点
cookie;
cookie工作原理;
问题与应用(能力要求)
在处理登录时,掌握爬虫跟踪cookie的两种方式。
思考与实践
思考:cookie能否在客户端创建?
实践:使用爬虫登录淘宝网,再爬取产品信息。
教学方法与手段
本章主要采用课堂演示、多媒体、实验等教学方式将使爬虫提交表单的知识传授给学生,同时让学生掌握爬虫跟踪cookie的两种方式。
第七章 抓取JavaScript
目的与要求
了解JavaScript在网页的作用;
了解JavaScript和Ajax的关系;
掌握使用Selenium执行JavaScript;
教学内容
第一节 JavaScript、Ajax和DHTML简介
主要内容
JavaScript简介;
Ajax和DHTML简介。
基本概念和知识点
JavaScript;
Ajax;
DHTML。
问题与应用(能力要求)
了解JavaScript的在网页的作用及其执行流程。
第二节 使用Selenium执行JavaScript
主要内容
selenium使用webdriver对象加载网页;
三种等待方式执行JavaScript的方式;
Selenium的其他webdriver;
基本概念和知识点
无头浏览器PhantomJS;
强制等待;
显式等待;
隐式等待;
期待条件;
定位器和选择器。
问题与应用(能力要求)
掌握使用selenium库执行JavaScript。
第三节 处理重定向
主要内容
两种类型的重定向;
使用Selenium监视DOM的元素存在与否来判定重定向;
直接使用Selenium的显式等待方式处理重定向。
基本概念和知识点
服务器端重定向和客户端重定向;
Selenium处理重定向。
问题与应用(能力要求)
掌握使用Selenium来处理重定向问题。
课程思政元素融入体现:使用urllib、requests库是无法获取那些需要执行JavaScript代码后的网页,怎么办?想办法解决,可以使用更高级的Selenium库来解决执行JavaScript的问题。让学生学习到,通过不断地钻研、知识的积累,总有方法解决存在的问题,培养学生开阔思路、精益求精的钻研精神。
思考与实践
思考:对于服务器端重定向,selenium可以处理吗?
实践:在一个页面上使用JavaScript编写一个客户端重定向的代码,编写爬虫使用selenium库处理。
教学方法与手段
本章主要采用课堂演示、多媒体、实验等教学方式将Selenium执行JavaScript的爬虫知识传授给学生。
第八章 避开抓取陷阱
目的与要求
了解爬虫应遵循的道德和法律规范;
掌握反反爬虫的措施;
避免表单提交涉及的陷阱。
教学内容
第一节 让网络机器人看着像人类用户
主要内容
爬虫的道德和法律规范;
反反爬虫的常用措施;
基本概念和知识点
反反爬虫;
请求头。
问题与应用(能力要求)
掌握常用的反反爬虫的措施,使爬虫看起来更像人类用户。
第二节 常见表单安全措施与问题检查表
主要内容
隐含输入字段值的猫腻;
避免蜜罐;
网络爬虫被网站封杀的诊断列表。
基本概念和知识点
隐含字段;
元素可见与不见的形式。
问题与应用(能力要求)
掌握常见的表单安全措施,避免被发现是一个爬虫而不是浏览器。
课程思政元素融入体现:网络爬虫在爬取数据时,要注意法律、道德和技术的边界。清楚网络数据抓取权限,对不公开的数据不具备抓取权限,对用户个人隐私信息,如身份信息、行踪轨迹、联系方式等,需要用户授权;不要非法获取计算机信息系统的数据,否则会构成犯罪;遵循网站Robots许可协议,同时不能对网站服务器的正常运行造成影响等。
思考与实践
思考:如何避免爬虫遭到网站管理员封杀IP?
实践:应用反反爬虫的措施,在淘宝爬取大量的产品信息。
教学方法与手段
本章主要采用课堂演示、多媒体、实验等教学方式将反反爬虫的技术和知识传授给学生。
五、各教学环节学时分配
教学环节 教学时数 课程内容 | 讲 课 | 习 题 课 | 讨 论 课 | 实验 | 其他教学环节 | 小 计 |
第1章 | 2 | 0 | 0 | 2 | 0 | 4 |
第2章 | 3 | 0 | 0 | 2 | 0 | 5 |
第3章 | 3 | 0 | 0 | 2 | 0 | 5 |
第4章 | 4 | 0 | 0 | 2 | 0 | 6 |
第5章 | 6 | 0 | 0 | 4 | 0 | 8 |
第6章 | 4 | 0 | 0 | 2 | 0 | 8 |
第7章 | 4 | 0 | 0 | 2 | 0 | 6 |
第8章 | 4 | 0 | 0 | 2 | 0 | 6 |
合计 | 30 | 0 | 0 | 18 | 0 | 48 |
“各教学环节学时分配”中,“其它教学环节”主要指习题课、课堂讨论、课程设计、看录相、现场参观等教学环节。
六、推荐教材和教学参考资源
[1] 瑞安·米切尔著.神烦小宝译. Python网络爬虫权威指南. 北京:人民邮电出版社, 2019.
[2] 曾剑平. Python爬虫大数据采集与挖掘. 北京: 清华大学出版社, 2020.
[3] 黄锐军. 北京: 高等教育出版社, 2018.
[4] Python网络爬虫与信息提取. https://www.icourse163.org/course/BIT-1001870001
七、其他说明
期末要求每个学生完成课程设计,最后,每个人要交程序源代码以及课程设计文档。
大纲修订人:陈光明 修订日期:2024.3
大纲审定人: 审定日期: