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()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容