Python网络爬虫与信息提取(二)

Reference:

第二周:网络爬虫之提取

单元4:Beautiful Soup库入门

4-1 Beautiful Soup库的安装

使用原理:能办你给它的任何文档当做一锅汤,然后煲制这锅汤。

演示html页面上地址:http://python123.io/ws/demo.html

如何获得页面的源代码:

方法1:右键点击查看源代码

方法2:用request库来自动获取页面的源代码

>>>from bs4 import BeautifulSoup

>>>

4-2 Beautiful Soup库的基本元素

Beautiful Soup库是解析、遍历、维护“标签树”的功能库。只要你提供的文件是标签类型,那么Beautiful Soup库都可以对它做很好的解析。

Beautiful Soup对应一个

Beautiful Soup库解析器:

Beautiful Soup类的基本元素:


4-3 基于bs4库的HTML内容遍历方法


4-4 基于bs4库的HTML格式化和编码

单元5:信息组织与提取方法

5-1  信息标记的三种方式

信息的标记:

***一个信息:北京理工大学

***一组信息:

需要对信息做一定的标记,使得我们能够理解信息所返回的真实含义。

比如:信息标记         ‘name’,‘北京理工大学’             给它标记一个name,表明它是一个名字

                                   ‘addr’,‘北京市海淀区中关村’    给它标记一个address,表明它是一个地址

信息的标记:

(1)标记后的信息可形成信息组织结构,增加了信息维度。

(2)标记后的信息可用于通信、存储或展示。

(3)标记的结构与信息一样具有重要价值。

(4) 标记后的信息更有利于程序的理解和运用,也更有利于人对信息的深入的认识和理解。

HTML的信息标记 = Hyper Text Markup Language 超文本标记语言

html是www的信息组织方式。能够将声音、图像、视频等超文本的信息嵌入到文本当中。

HTML的信息标记

HTML通过预定义的<>...</>标签形式组织不同类型的信息。示例如图:

信息标记有哪些种类呢?

信息标记的三种形式:XML,JSON和YMAL

XML = eXtensible Markup Language 扩展标记语言

是一种与HTML接近的标记语言。

示例:

JSON = JavaScript Object Notation

有类型的键值对构建的信息表达方式 key:value

什么是键值对?就是给出一个信息,并对这个信息的类型做一个定义。

比如:

在JSON类型中要注意:无论是键还是值都需要通过增加双引号来表达它是字符串的形式。如果是数字,比如:1990,1911,就直接写数字即可。这种类型反应在键值对上,说明它是一个有数据类型的键值对。

值的部分有多个名字的时候:

键值对之间可以嵌套使用:

总结:JSON使用有类型的键值对将信息组织起来

好处:

YAML=YAML Ain't Markup Language

无类型键值对标记信息的表达形式


5-2  三种信息标记形式的比较

XML实例:

JSON实例:

YAML实例:

比较:

(1)XML 格式是最早的通用信息标记语言,可扩展性好,但繁琐。  应用:Internet上的信息交互与传递

(2)JSON 信息有类型,适合程序处理(js),较XML 简洁。应用:移动应用云端和节点的信息通信(一般用在程序对接口处理的地方)。

但是JSON有一个缺点:无注释。

(3)YAML 信息无类型,文本信息比例最好,可读性好。应用:各类系统的配置文件,有注释易读。因为既适合人类阅读,又适合程序分析。

5-3  信息提取的一般方法

信息提取指从标记后的信息中提取所关注的内容。

无论哪种形式,都包含“信息”和“标记”两部分。

信息提取的一般方法:

方法一:完整解析信息的标记形式,再提取关键信息。

XML JSON YMAL 需要标记解析器 例如:bs4库的标签树遍历

优点:信息解析准确 

缺点:提取过程繁琐,速度慢,需要对整个文本的信息组织形式有清楚的理解。

方法二:无视标记形式,直接搜索获取关键信息。

搜索 对信息的文本查找函数即可

优点:提取过程简洁,速度较快。

缺点:提取结果准确性与信息内容相关。

融合方法:结合形式解析与搜索方法,提取关键信息。

XML JSON YAML 搜索 ---》需要标记解析器及文本查找函数

实例:提取HTML中所有URL链接

思路:(1)搜索到所有的<a>标签

(2)解析<a>标签格式,提取href后的链接内容

<>.find_all(name,attrs,recursive,string,)

扩展方法

5-4 基于bs4库的HTML内容查找方法

单元6:实例1:中国大学排名爬虫

最好大学网:http://zuihaodaxue.cn/zuihaodaxuepaiming2016.html

功能描述:

输入:大学排名URL链接

输出:大学排名信息的屏幕输出(排名,大学名称,总分)

技术路线:requests-bs4

定向爬虫:仅对输入URL进行爬取,不扩展爬取。

(PS:从一个URL爬取其他更多的URL信息,这个就不是定向爬虫了)

STEP1. 查看信息是否写在html代码中?还是动态生成的?

STEP2. 查看该网站是否提供了robots的协定

程序的结构设计

步骤1:从网络上获取大学排名网页内容 getHTMLText()

步骤2:提取网页内容中信息到合适的数据结构 fillUnivList()

步骤3:利用数据结构展示并输出结果printUnivList()

推荐阅读更多精彩内容