(转)Python爬虫--通用框架
转自https://blog.csdn.net/m0_37903789/article/details/74935906
前言:
相信不少写过Python爬虫的小伙伴,都应该有和笔者一样的经历吧只要确定了要爬取的目标,就开始疯狂的写代码,写脚本经过一番努力后,爬取到目标数据;但是回过头来,却发现自己所代码复用性小,一旦网页发生了更改,我们也不得不随之更改自己的代码,而却自己的程序过于脚本化,函数化,没有采用OPP的思维方式;没有系统的框架或结构。
指导老师看了笔者的爬虫作品后,便给出了以下三点建议:
(1)爬虫爬取的数据根据需要存数据库或直接写入.csv文件;
(2)爬虫程序包括控制程序、URL调度器、页面加载器、页面分析器、数据处理器等,尽量用OOP的思想,写成类,便于扩充,而不要直接全写成脚本;
(3)控制程序最好使用一个用户界面,用于设置开始爬取的页面、数据存放位置、显示爬取情况等。
由于笔者知识和能力有限,刚听到这些建议时,很难明白他的意思,而笔者还偏执的认为既然已经成功的爬取到目标数据,也就没什么要做的啦,已经OK啦直到昨天看了这个http://www.imooc.com/learn/563关于Python爬虫的课程后,才彻底的理解了老师教的课程里系统的讲解了爬虫应有的框架和结构,使笔者收益匪浅,故在此总结,反思,希望对大家有帮助。
这里先为它,打个小广告吧~笔者个人认为,不管你是资深的Python爬虫专家,还是才接触爬虫的新手,都应该来看一看,为你以后的Python爬虫工作添砖加瓦,广告语“慕课网—程序员的梦工厂”。
PS:以下截图,为笔者再听课时截图整理所得,故图片来源该课程的PPT
基于百度百科词条,通用爬虫源码:https://github.com/NO1117/baike_spider
Python交流群:942913325 欢迎大家一起交流学习
总结:
1.爬虫思路
如上图所示,一般在开始爬虫时,都会经历这样的思考过程,其中最为主要和关键的分析目标,只有经过准确的分析和前期的充分准备,才能顺顺利利的爬取到目标数据。
2.爬虫任务:

3.爬虫的框架及运行流程图
接下来,就一起学习一下Python爬虫的框架吧~
爬虫的大致运行过程如下:
4.URL管理器
所谓的URL管理器,主要是由两个集合构成(待抓取URL集合和已抓取URL集合),其目的是为了防止重复抓取,循环抓取;
URL管理器的实现方式,分三种:a,Python内存(即集合);b,数据库(如MySQL,MongoDB等);c,缓存数据库
5.网页下载器
所谓网页下载器,即是将互联网上URL对应的网页下载到本地的工具
网页下载器,大致为request和urllib2两种;
6.网页解析器
什么是网页解析器?

下面,我们来看看,如何解析一个网页文件
解析器种类:
好了,通过以上的学习,我们掌握了Python爬虫的简单框架。那么怎样才能写一个好的python爬虫呢?又该如何去编写代码,实现我们的爬虫功能呢?下一步又该如何优化我们的爬虫代码呢?
(转)Python爬虫--通用框架的更多相关文章
- python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)
操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...
- Python爬虫Scrapy框架入门(0)
想学习爬虫,又想了解python语言,有个python高手推荐我看看scrapy. scrapy是一个python爬虫框架,据说很灵活,网上介绍该框架的信息很多,此处不再赘述.专心记录我自己遇到的问题 ...
- python爬虫----scrapy框架简介和基础应用
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...
- Python爬虫-pyspider框架的使用
pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优 ...
- Python 爬虫-Scrapy框架基本使用
2017-08-01 22:39:50 一.Scrapy爬虫的基本命令 Scrapy是为持续运行设计的专业爬虫框架,提供操作的Scrapy命令行. Scrapy命令行格式 Scrapy常用命令 采用 ...
- Python爬虫 ---scrapy框架初探及实战
目录 Scrapy框架安装 操作环境介绍 安装scrapy框架(linux系统下) 检测安装是否成功 Scrapy框架爬取原理 Scrapy框架的主体结构分为五个部分: 它还有两个可以自定义下载功能的 ...
- python爬虫scrapy框架
Scrapy 框架 关注公众号"轻松学编程"了解更多. 一.简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量 ...
- Python爬虫Scrapy框架入门(2)
本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ...
- Python爬虫Scrapy框架入门(1)
也许是很少接触python的原因,我觉得是Scrapy框架和以往Java框架很不一样:它真的是个框架. 从表层来看,与Java框架引入jar包.配置xml或.property文件不同,Scrapy的模 ...
随机推荐
- Gerrit GitLab GitHub的几点不同
代码评审的方式不一样 GitHub是基于Pull Request 进行代码评审; GitLab是基于Merge Request 进行代码评审; Gerrit是基于Change Request 进行代码 ...
- 寻找无序数组中的前k大元素
题目描述 以尽可能小的代价返回某无序系列中的两个最大值,当有重复的时设置某种机制进行选择. 题解 首先要考虑的是重复的数的问题. A.不处理重复数据方法:在处理第k大的元素时不处理重复的数据,也就是将 ...
- Linux学习之路第四天(运行级别)
linux 实用指令 指定运行级别 运行级别说明 0 :关机 1:单用户(找回丢失密码) 2.多用户状态没有网络服务 3.多用户状态有网络服务 4.系统未保留给用户 5.图形界面 6.系统重启 常用的 ...
- echarts堆叠柱状图在最上面的柱子显示总和
需求 柱子需设置barMinHeight 在堆叠柱状图的最上面显示当前堆叠的总和 直接上代码吧 需要注意:设置barMinHeight时为了让0不显示,只能将0设置为null; 设置为null的柱子l ...
- Python单元测试框架unittest之断言(assert)
unittest中断言主要有三种类型: 1.基本的布尔断言,即:要么正确,要么错误的验证 2.比较断言,如比较两个变量的值(跟上面的布尔断言区别不大,主要是通过比较两个变量的值得出布尔值) 3.复杂断 ...
- 【Git】pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
这种情况下,如何保留本地的修改同时又把远程的合并过来呢? 首先取决于你是否想要保存本地修改.(是 /否) 是 git stash git pull origin master git stash po ...
- HTTP 2.0标准针对HTTP 1.X的五点改进
HTTP 2.0兼容HTTP 1.X,同时大大提升了Web性能,进一步减少了网络延迟,减少了前端方面的工作.HTTP 1.X存在的缺点如下: 1)HTTP 1.0一次只允许在一个TCP连接上发起一个请 ...
- OSPF的基本工作原理
OSPF的基本工作原理 1.定义 2.特点 3.基本概念 4.OSPF五种分组类型 5.DR/BDR 6.区域 1.定义 开放最短路径优先OSPF,是为了克服RIP的缺点在1989年开发出来的. &q ...
- [源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator
[源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator 目录 [源码解析] 深度学习分布式训练框架 horovod (19) --- kub ...
- vue(24)网络请求模块axios使用
什么是axios Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 主要的作用:axios主要是用于向后台发起请求的,还有在请求中做更多是可控功能. a ...