第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

1.注册中国大学MOOC
2.选择北京理工大学嵩天老师的《Python网络爬虫与信息提取》MOOC课程
3.学习完成第0周至第4周的课程内容,并完成各周作业
4.提供图片或网站显示的学习进度,证明学习的过程。

第3次作业-MOOC学习笔记:Python网络爬虫与信息提取_第1张图片

 

 

 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取_第2张图片

 

 

 


5.写一篇不少于1000字的学习笔记,谈一下学习的体会和收获。

经过了几天的学习,对《Python网络爬虫与信息提取》这课程进行回顾,和整理。

第一周,学习了Requests库的安装,Requests库的主要方法及对象和属性。列如:

1.requests.request():构造一个请求

2.requests.get():获取html网页

3.request.head():获取html网页头信息

4.request.post():向html网页提交post请求

5.request.put():向html网页提交put请求

6.request.patch():向html网页提交局部修改请求

7.request.delete():向html提交删除请求

HTTP协议对资源的操作。列如:

1.GET:请求获取URL位置的资源

2.HEAD:请求获取URL位置资源的响应消息报告

3.POST:请求向URL位置的资源后附加新的数据

4.PUT:请求向URL位置存储一个资源,覆盖原URL位置的资源

5.PATCH:请求局部更新URL位置的资源,覆盖原URL位置的资源

6.DELETE:请求删除URL位置存储的资源

还介绍了网络爬虫所引发的问题及限制。列如:

问题:

1.骚扰问题:受限于编程水平和目的,网络爬虫将会为web服务器带来巨大的资源开销。

2.法律风险:服务器上的数据有产权归属,网络爬虫获取数据后牟利将会带来法律风险。

3.隐私泄露:网络爬虫可能具备突破简单访问控制的能力,获得被保护数据从而泄露个人隐私。

对爬虫限制:

1.来源审查:判断User-Agent进行限制

2.发布Robots公告

第二周,详细介绍了Beautiful Soup,解析器分别有:html.parser, lxml, xml, html5lib

BeautifulSoup类的基本元素:

1.Tag:标签,最基本的信息组织单元,分别用<>和表明开头和结尾

2.Name:标签的名字,

的名字是'p',格式:.name

3.Attributes:标签的属性,字典的组织形式,格式:.attrs

4.NavigableString:标签内非属性字符串,<>...中的字符串,格式:.string

5.Comment:标签内字符串的注释部分,一种特殊的Comment类型

标签树的遍历:

上行遍历:

(1).parent:节点的父亲标签

(2).parents:节点先辈标签的迭代类型,用于循环 遍历先辈节点

下行遍历:

(1).contents:子节点列表,将所有儿子节点存入列表

(2).children:子节点的迭代类型,与.contents类似,用于循环遍历儿子节点

(3).descendants:子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

平行遍历:

(1).next_sibling:返回按照HTML文本顺序的下一个平行节点标签

(2).previous_sibling:返回按照HTML文本顺序的上一个平行节点标签

(3).next_siblings:迭代类型,返回按照HTML文本顺序的后续所有平行节点标签

(4).previous_siblings:迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

信息提取的一般方法:

(1)完整解析信息的标记形式,再提取关键信息。XML,JSON,YAML

  需要标记解析器,如bs4库的标签树遍历,优点是信息解析准确,缺点是提取过程繁琐

(2)无视标记信息,直接搜索关键信息。搜索

  使用对信息的文本查找函数即可。优点是提取过程简洁,速度快,缺点是提取信息的准确性与信息内容直接相关。

第3周介绍的是正则表达式语法由字符和操作符构成和re库主要功能函数,经典正则表达式:

1.^[A-Za-z]+$:由26个字母组成的字符串

2.^[A-Za-z0-9]+$:由26个字母和数字组成的字符串

3.^-?\d+$:整数形式字符串

4.^[0-9]*[1-9][0-9]*$:正整数形式字符串

5.[1-9]\d{5}:中国境内邮政编码

6.[\u4e00-\u9fa5]:匹配中文字符

7.\d{3}-\d{8}|\d{4}-\d{7}:国内电话号码:010-68913536

8.(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]):IP地址

正则表达式的类型

1.raw string类型(原生字符串类型,不包含转义符的类型):r'text', 如r'\d{3}-\d{8}|\d{4}-\d{7}'
2.string类型,将\理解为转义符,使用更繁琐:如'\\d{3}-\\d{8}|\\d{4}-\\d{7}'
当正则表达式包含转义字符,使用raw string类型 ,经过这次学习知道了许多基础算法都有规范的写法。

Re库主要功能函数:

1.re.search(pattern,string,flags=0):在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象

2.re.match(pattern,string,flags=0):从一个字符串的的开始位置起匹配正则表达式,返回match对象

3.re.findall(pattern,string,flags=0):搜索字符串,以列表类型返回全部能匹配的字符串

4.re.split(pattern,string,maxsplit=0,flags=0):将一个字符串按照正则表达式匹配结果进行分割,返回列表类型

5.re.finditer(pattern,string,flags=0):搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

6.re.sub(pattern,repl,string,count=0,flags=0):在一个字符串中替换所有匹配正则表达式的字串,返回替换后的字符串

第4周讲解的是网络爬虫的框架,框架结构:

1.Engine:框架核心,控制所有模块之间的数据流;根据条件触发事件。

2.Downloader:根据请求下载网页

3.Scheduler:对所有爬取请求进行调度管理

4.Downloader Middleware:实施Engine、Scheduer和Downloader之间进行用户可配置的控制修改、丢弃、新增请求或响应

5.Spider:解析Downloader返回的响应产生爬取项,产生额外的爬取请求

6.Item Piplines:以流水线方式处理Spider产生的爬取项操作包括:清理,检验,查重,存储数据

7.Spider Middleware:对请求和爬取项再处理

通过这几个天的学习,对这门课程也有了一定的了解,但是实践还完全不过,许多问题还要解决。

你可能感兴趣的:(第3次作业-MOOC学习笔记:Python网络爬虫与信息提取)