python的网页解析器_python 之网页解析器

一、什么是网页解析器

1、网页解析器名词解释

首先让我们来了解下,什么是网页解析器,简单的说就是用来解析html网页的工具,准确的说:它是一个HTML网页信息提取工具,就是从html网页中解析提取出“我们需要的有价值的数据”或者“新的URL链接”的工具。

2、网页解析图解

1014259-20170326111057393-1771935228.jpg

二、python 网页解析器

1、常见的python网页

常见的python网页解析工具有:re正则匹配、python自带的html.parser模块、第三方库BeautifulSoup(重点学习)以及lxm库。

2、常见网页解析器分类

以上四种网页解析器,是两种不同类型的解析器:

(1)模糊匹配

re正则表达式即为字符串式的模糊匹配模式;

(2)结构化解析

BeatufiulSoup、html.parser与lxml为“结构化解析”模式,他们都以DOM树结构为标准,进行标签结构信息的提取。()

1014259-20170326112236049-831872032.jpg

(3)结构化解析

我们在了解什么是结构化解析之前,需要先了解下什么是DOM树这个概念。

DOM树解释:即文档对象模型(Document Object Model),其树形标签结构,请见下图。

1014259-20170326114434752-2028623603.jpg

而所谓结构化解析,就是网页解析器它会将下载的整个HTML文档当成一个Doucment对象,然后在利用其上下结构的标签形式,对这个对象进行上下级的标签进行遍历和信息提取操作。

三、BeautifulSoup第三方库

1、beautifulsoup4 简介

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python第三方库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

2、beautifulsoup4 安装

(1)安装方法

我直接启动cmd命令行运行环境,使用pip管理工具进行安装,安装命令如下。

$ pip install beautifulsoup4

(2)安装测试

安装完成后,我直接启动IDLE环境,引入bs4测试其是否安装成功。

>>>> from bs4 import BeautifulSoup

>>>> import bs4

>>>> print bs4

3、BeautifulSoup 语法

BeautifulSoup使用的一般流程就三步走:

(1) 创建BeautifulSoup对象

(2) 使用BeautifulSoup对象的操作方法find_all 与 find进行解读搜索。

如:

>>>> soup.find_all('a')

>>>> soup.find(‘a’)

(3) 利用DOM结构标签特性,进行更为详细的节点信息提取。

1014259-20170326122558065-919988375.jpg

1014259-20170326122607658-2032225424.jpg

4、使用方法(学习重点)

(1)第一步:创建BeautifulSoup对象(即DOM对象)

# 引入BeautifulSoup库>>>> frombs4 import BeatifulSoup

# 根据HTML网页字符串结构创建BeatifulSoup对象。>>>> soup =BeautifulSoup(html_doc, #HTML文档字符串'html.parser', #HTML解析器

from_encoding= 'utf-8'#HTML文档编码

)

(2)第二步:搜索节点(find_all,find)

搜索节点方法:

soup.find_all() ---查找所有符合查询条件的标签节点,并返回一个列表。

soup.find()--- 查找符合符合查询条件的第一个标签节点。

实例1:搜索所有标签

>>>> soup.find_all('a')

实例2:查找所有标签符合标签名为a,链接符合 /view/123.html的节点

1)实现方法1:

>>>> soup.find_all('a', href = '/view/123.html')

2)实现方法2:

>>>> soup.find_all('a', href = re.compile(r'/view/\d+\.html'))

实例3:查找所有标签为名为a,class属性为abc,文字为python的节点

>>>> soup.findall('a', class_= 'abc', string = 'python')

(3)第三步:访问节点信息

比如我们得到节点: I love Python

1) 获取节点名称

>>>> node.name

2)获取查找到的a节点的href属性

>>>> node['href']

或者>>>> node.get('href')

3)获取查找到的a节点的字符串内容

>>>> node.get_text()

5、BeautifulSoup 信息提取实例

html_doc = """

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names wereElsie,LacieandTillie;

and they lived at the bottom of a well.

...

"""# 获取所有a标签节点内容

links= BeautifulSoup('a')

#查找已经获取a标签节点中所有连接for link inlinks:

pirnt(link.name,link['href'],link.get_text())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JWT:我应该使用哪种签名算法?

JWT:我应该使用哪种签名算法?JSON Web Token (JWT) 可以使用许多不同的算法进行签名:RS256、PS512、ES384、HS1;当被问及他们想使用哪一个时,您就会明白为什么有些开发人员会挠头。根据我的经验,许多主流身…

写一个聊天辅助程序

Codeprocedure TForm1.Button1Click(Sender: TObject);varhParent,hButton,hMemo: HWND;beginMemo1.SelectAll;//Memo内容全选Memo1.CopyToClipboard;//把Memo中选中的语句拷贝到剪贴板中try//找发送消息的QQ窗口hParent : FindWindow(nil, 发送消息);//然后找回话时用的编辑窗…

真是个狠人!开学第一天,这批小学生的造型刷爆朋友圈!

全世界只有3.14 % 的人关注了爆炸吧知识在史上最长的长假过后杭州一二三年级小学生回到学校忘记座位在哪里、老师姓什么各种有趣故事不断……而在养正小学门口,从入校门开始,大家笑声就不断,别样的开学礼一下刷屏了朋友圈:每个小朋…

Linux系统断电后起不来,centos/linux 断电后,开机光标闪现不能开启,重新引导

一台工作站在某次断电以后不能正常重启了。主板的文字结束后,就只剩下光标在闪。开机,观察还能进行bios设置,主板没有问题。用u盘能启动操作系统,可以查看硬盘。所以硬件没有问题。猜想是引导出问题了。阅读了以下文章&#xff1a…

SCM基础之过程描述

软件开发一般分为:计划阶段、开发阶段和维护阶段 计划阶段:总体研发计划 -> 配置管理计划: CCB确定开发计划中的里程碑和开发策略CMO(配置管理员)根据CCB规划,制定配置管理计划,交由CCB审核C…

开通博客,记录生活

2013年大学毕业后,我会到了家乡,在一家大的印刷厂找了一份工作。工作职责就是网管兼软件开发,拿2千多块的工资。后来有一次我打印文件时,发现了一份工资列表。估计是人力资源打错打印机了。我大概一看,原来最高层总经理…

C++中如何读取一个数的位数_C语言编写程序求水仙花数

C语言编写程序求水仙花数水仙花数是一个数学问题,其实质是一个三位数,个位数的立方加十位数的立方加百位数的立方之和等于这个三位数本身。例如153=1*1*15*5*53*3*3,即153=112527。这是一个相对较为简单的C程序&#x…

RabbitMQ简介和六种工作模式详解

一、RabbitMQ简介是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQP协议的。1.1 AMQP协议Advanced Message Queuing Protocol(高级消息…

为什么男性比女性死得更早,心疼一秒钟!

最近娱乐圈的那些大瓜大家都吃了吗?某明星的运动?黑眼圈??不免让小编想起之前看的文章 男性为啥比女性“去”的早嗯,有可能是操劳过度 生活太累 咳咳咳咳咳以上均是不负责任猜想吃瓜要谨慎呦????不过这篇报道…

奥巴马访华:不建议过度审查 提倡加强互联网开放

新华网上海11月16日电 美国总统奥巴马16日在上海与中国青年对话。在回答互联网开放的问题时,奥巴马表示信息越是能够自由的流通,社会就变得越强,因为这样子,世界各地的公民能让自己的政府负责。 [奥巴马]好吧,我现在请…

linux脚本开机挂载,案例七:shell实现开机自动挂载本地YUM仓库程序

实现开机自动挂载本地YUM仓库自动化程序,可以在没有网络的情况下也可以使用yum安装程序。#!/bin/bash#自动搭建yum本地仓库#cdrom () {mount /dev/cdrom /media/cdrom &> /dev/null[ $? -eq 0 ] && echo "挂载成功"}[ -d /media/cdrom ] …

理中汤治疗口疮

理中汤治疗口疮 □ 高建忠 山西中医学院附属医院  口舌生疮疼痛,老百姓常说“上火了”,医者也常从实火或虚火论治,多用凉药。   《丹溪心法口齿》:“口疮服凉药不愈者,因中焦土虚,且不能食,…

(转)C#网络编程(基本概念和操作) - Part.1

源码下载:http://www.tracefact.net/SourceCode/Network-Part1-2.rar C#网络编程(基本概念和操作) - Part.1 引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识&#x…

jwt如何防止token被窃取_在吗?认识一下JWT(JSON Web Token)?

什么是JSON Web Token ?官网介绍:JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地将信息作为JSON对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。可…

8月日更,我的困难与感悟

8月份参加了掘金的日更活动,坚持每天写技术文章进行分享,现在活动结束了,来复盘下这一个月来我的困难与感悟。8月日更其实刚开始我是不想参加这个活动的,最近确实比较忙,不管是工作还是自己的私事,都不允许…

【IfICan】脚步很乱!

现在感觉压力实在很大,大大小小的事不停往身上压,有时连回宿舍都是个问题。我很想把事情都做好,不希望在我手上的事被我搞杂,可是就是有些事被我落下了,真的感觉很力不从心!最近负责团队内的几个小事情&…

那些神一样的学习技巧,专治各种不服!

▲ 点击查看著名的俄国生理学家曾反复对自己的学生提过这个要求:“应当先学会观察,观察。不学会观察,你就永远当不了科学家。”鲁迅也曾这样教导:“如果要创作,第一要观察。”在《神探夏洛克》中,有这么一段…

关于清晰讲解linux正则表达式的博文分享

http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html linux shell 正则表达式(BREs,EREs,PREs)差异比较 http://www.360doc.com/content/11/0304/11/5912935_98007617.shtml 正则表达式练习 http://www.jb51.net/article/42989.htm Linux 正则表达式详解 http:…

JavaScrip有哪些优点

JavaScript可能不是一直可用的,但这并不意味着它根本不能用。只不过它不应该是用户交互的唯一方式。 使用JavaScript有以下优点。 1.服务器交互较少:可以再提交页面到服务前对用户输入的内容进行验证。这样减少了服务器的通信量,就意味着节约…

kafka 怎么样连接图形化界面_图形化编程有多简单,点亮LED不到一分钟

Arduino编程在所有单片机当中应该说是最简单的了,但是还可以更加简单。比如说图形化编程,图形化编程真正让Arduino大众化了,因为谁都可以通过图形化编程方式来制作自己需要的小玩意。啃萝卜关于图形化编程软件有很多,我独宠啃萝卜…