Python 开发轻量级爬虫06
Python 开发轻量级爬虫
(imooc总结06--网页解析器)
介绍网页解析器
将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容。
也就是说网页解析器是从网页中提取有价值数据的一种工具,对于搜索引擎来说它会提取出网页所有的url,用于后续的访问。
但是,对于我们定向爬虫来说,除了提取出待爬取的url之外,会提取出我们感兴趣的想要的有价值的数据。
也就是说,网页解析器会以下载好的HTML网页字符串作为输入,然后提取出有价值的数据和新的待爬取的url列表。
Python有哪几种网页解析器呢?
最直观的一种使用正则表达式,它会将整个网页当做一个字符串,然后使用模糊匹配方式来提取出有价值数据。
虽然直观,但是文档要是比较复杂的话,这种方式非常的麻烦。
我们可以使用python自带的html.parser来解析网页。
可以使用BeautifulSoup这个第三方插件来解析网页。
可以使用lxml这个第三方的插件来解析html网页或xml网页。
其中BeautifulSoup这个第三方插件,它可以使用python自带的html.Parser作为它的解析器,也可以用lxml作为它的解析器,相对来说比较强大。
这里使用BeautifulSoup来解析网页。
其中正则表达式是一种字符串型的模糊匹配,另外三种是结构化的解析。
什么是结构化的解析呢?
是将整个网页文档下载成一个DOM(document object model)树,
也就是document object model文档对象模型这么一棵树,以树的形式来进行元素的上下级遍历和访问的。

DOM树是W3C官方定义的访问解析html的标准接口。
它会将整个网页的文档当成document对象,在它的下面就是html根节点,再下面就是head元素和body元素,head元素下面又会包含titile元素每个元素。
如果没有子元素,就会对应文本,比如说文本“我的标题”,Body元素下也会包含很多的子元素 a元素 div元素,a元素下包含需要文本链接文本 Div元素 包含段落文本。
同时每个元素有自身属性的话,herf就是链接元素它指定的url。
如何使用这种方式?
dom就将整个文档下载成树型结构,使用树型的上下级关系,可以很方便的定位到某个元素,然后访问这个元素的自身的属性、文本。
BeautifulSoup这个第三方的插件就是使用dom的方式来解析网页的。
Python 开发轻量级爬虫06的更多相关文章
- Python 开发轻量级爬虫08
Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...
- Python 开发轻量级爬虫07
Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...
- Python 开发轻量级爬虫05
Python 开发轻量级爬虫 (imooc总结05--网页下载器) 介绍网页下载器 网页下载器是将互联网上url对应的网页下载到本地的工具.因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器 ...
- Python 开发轻量级爬虫04
Python 开发轻量级爬虫 (imooc总结04--url管理器) 介绍抓取URL管理器 url管理器用来管理待抓取url集合和已抓取url集合. 这里有一个问题,遇到一个url,我们就抓取它的内容 ...
- Python 开发轻量级爬虫03
Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监 ...
- Python 开发轻量级爬虫02
Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url, ...
- Python 开发轻量级爬虫01
Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...
- Python开发轻量级爬虫
这两天自学了python写爬虫,总结一下: 开发目的:抓取百度百科python词条页面的1000个网页 设计思路: 1,了解简单的爬虫架构: 2,动态的执行流程: 3,各部分的实现: URL管理器:p ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...
随机推荐
- 详解AsyncTask的使用
转载自:http://blog.csdn.net/liuhe688/article/details/6532519 在Android中实现异步任务机制有两种方式,Handler和AsyncTask. ...
- php设置浏览器响应时间
ini_set('max_execution_time', '0'); ‘0’表示不受时间限制,一般默认30s;
- HttpResponse的使用方法
HttpResponse的使用方法: HttpRequest类是一个封闭HTTP提交信息的类型,而封闭HTTP输出信息的类型就是HttpResponse类,使用HttpResponse类可以实现三种类 ...
- jQuery中clone和clone(true)的区别
今天要写的是clone和clone(true)的区别 两者长得很像呀,clone(true)比clone() 多了一个true.看下图白白的牙,笑起来就是这么灿烂.有了true就跟笑起来一样,有了笑 ...
- wpf converter converterparameter 绑定多参数
1. converterparameter不是依赖属性,所以不能用binding. 2. 可以把converter 的接口 IValueConverter改为 IMultiValueConverter ...
- 【Phylab2.0】Alpha版本项目展示
团队成员 冯炜韬(PM)http://www.cnblogs.com/toka 岳桐宇(后端)http://www.cnblogs.com/mycraftmw 杨子琛(测试&LaTeX)htt ...
- PL/SQL 将旧表的一些字段赋值给新的表中的字段的做法
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表
- Google 地图 API V3 之控件
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- The RAII Programming Idiom
https://www.hackcraft.net/raii/ https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
- Spring系列之AOP实现的两种方式
AOP常用的实现方式有两种,一种是采用声明的方式来实现(基于XML),一种是采用注解的方式来实现(基于AspectJ). 首先复习下AOP中一些比较重要的概念: Joinpoint(连接点):程序执行 ...