python爬虫笔记_Python开发简单爬虫--学习笔记

一、概述

目标

掌握开发轻量级爬虫

内容

爬虫简介

简单爬虫架构

URL管理器

网页下载器(urllib2)

网页解析器(BeautifulSoup)

完整实例:爬取百度百科雷军词条相关的1000个页面数据

tips: 轻量级爬虫:抓取无需登录的静态页面

复杂爬虫:抓取需要登录或者要Ajax异步加载等复杂场景的页面

二、爬虫的简介及爬虫技术价值

2.1、什么是爬虫

一段自动抓取互联网信息的程序,可以从一个URL出发,访问它所关联的URL,提取我们所需要的数据。也就是说爬虫是自动访问互联网并提取数据的程序。

8584448d54a3

什么是爬虫

2.2、爬虫的价值

8584448d54a3

爬虫的价值

三、简单的爬虫架构

8584448d54a3

简单的爬虫架构

爬虫调度端

用来启动、执行、停止爬虫,或者监视爬虫中的运行情况 在爬虫程序中有三个模块URL管理器:对将要爬取的URL和已经爬取过的URL这两个数据的管理

网页下载器

将URL管理器里提供的一个URL对应的网页下载下来,存储为一个字符串,这个字符串会传送给网页解析器进行解析

网页解析器

一方面会解析出有价值的数据,另一方面,由于每一个页面都有很多指向其它页面的网页,这些URL被解析出来之后,可以补充进URL管理 器

这三部门就组成了一个简单的爬虫架构,这个架构就能将互联网中所有的网页抓取下来

8584448d54a3

动态执行流程

四、URL管理器及三种实现方式

8584448d54a3

URL管理器

8584448d54a3

URL管理器实现方式

为啥需要URL管理器?

因为因为要爬取的页面中有指向其他页面的URL,而其他URL也有指向当前页面的URL,这就可能会导致重复抓取和循环抓取,所以URL管理器就是用来防止重复和循环抓取问题的

五、网页下载器和urlib模块

本文使用urllib实现。urllib2是python自带的模块,不需要下载,urllib2在python3.x中被改为urllib.request。

三种实现方式

8584448d54a3

第一种实现方式

8584448d54a3

第二种实现方式

8584448d54a3

第三种实现方式

六、网页解析器和BeautifulSoup第三方模块

8584448d54a3

网页解析器的作用

8584448d54a3

网页解析器的种类

8584448d54a3

结构化解析树模型

本文的解析器用BeautifulSoup模块,先测试验证模块是否已安装

8584448d54a3

测试bs4是否已安装

Beautiful Soup

相比其他的html解析有个非常重要的优势。html会被拆解为对象处理。全篇转化为字典和数组。相比正则解析的爬虫,省略了学习正则的高成本,本文使用python3.x系统自带不需要安装。

8584448d54a3

BeautifulSoup解析

方法介绍

8584448d54a3

创建BeautifulSoup对象

8584448d54a3

搜索节点

8584448d54a3

访问节点

七、爬虫开发实例(目标爬虫百度百科)

8584448d54a3

实例爬虫

在编写代码前,先谈谈确定目标与分析目标两个步骤

确定目标

确定抓取哪个网站哪个网页的哪部分数据。该实例要抓取百度百科雷军词条页面以及它相关词条页面的标题和简介。

分析目标

也就是抓取的策略,包含三部分。

URL格式

限定目标的范围,不然会抓取到很多不相关的页面。通过审查元素可知该实例的URL格式是http://baike.baidu.com/item/{标题}

数据格式

本实例中就是分析所有词条中标题和简介所在标签的格式。通过审查元素得标题元素为 :class="lemmaWgt-lemmaTitle-title",简介元素为:class="lemma-summary"

网页的编码

要知道网页的编码才能够正常解析,不然乱码就解析不。通过审查元素网页的编码是UTF-8

编写代码

8584448d54a3

项目结构

8584448d54a3

调度模块

8584448d54a3

URL管理模块

8584448d54a3

文件下载模块

8584448d54a3

文件解析模块

8584448d54a3

结果收集、输出模块

8584448d54a3

运行结果

八、总结

这是本人学习的笔记,还有附带做的实验。个人感觉Python用起来确实比较方便,因为自带模块和第三方模块很多,实验过程中有2个地方栽了坑,第一个是类的初始化函数init, 因为_写成中文了,导致没有调用init,可是在这一步又没有报错,后面的代码才报错,另一个地方就是代码缩进问题导致报红叉,由此可知Python是一种严格按照缩进解析的语言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值