(转)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爬虫呢?又该如何去编写代码,实现我们的爬虫功能呢?下一步又该如何优化我们的爬虫代码呢?

原文地址:https://www.cnblogs.com/xx123/p/10425835.html

时间: 2024-08-18 11:51:57

(转)Python爬虫--通用框架的相关文章

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前的文章便于理解 本文将介绍如何用scrapy来登录知乎. 不多说,直接上代码: import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhi

爬虫通用框架

1 爬虫通用框架 2 import requests 3 4 def get_html_text(url): 5 try: 6 r =requests.get(url,timeout=20) 7 8 r.raise_for_status() 9 10 r.encoding = r.apparent_encoding 11 12 return r.text 13 14 except: 15 return "产生异常" 16 17 if __name__ == '__main__': 18

Python爬虫Scrapy框架入门(0)

想学习爬虫,又想了解python语言,有个python高手推荐我看看scrapy. scrapy是一个python爬虫框架,据说很灵活,网上介绍该框架的信息很多,此处不再赘述.专心记录我自己遇到的问题以及解决方案吧. 给几个链接吧,我是根据这几个东西来尝试学习的: scrapy中文文档(0.24版,我学习的时候scrapy已经1.1了,也许有些过时): http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/overview.html 大神的博客介绍:

Python爬虫——Scrapy框架安装

在编写python爬虫时,我们用requests和Selenium等库便可完成大多数的需求,但当数据量过大或者对爬取速度有一定要求时,使用框架来编写的优势也就得以体现.在框架帮助下,不仅程序架构会清晰许多,而且爬取效率也会增加,所以爬虫框架是编写爬虫的一种不错的选择. 对于python爬虫框架,目前较为热的是Scrapy,其是一个专门爬取web结构性数据的应用框架.Scrapy是一个强大的框架,所依赖的库也较多,比如有lxml,pyOpenSSL和Twisted等,这些库在不同的平台下要求也不一

python爬虫--scrapy框架

Scrapy 一 介绍 Scrapy简介 1.Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛 2.框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便 Scrapy架构图 Scrapy主要包括了以下组件: 1.引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 2.调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可

Python 爬虫-Scrapy框架基本使用

2017-08-01  22:39:50 一.Scrapy爬虫的基本命令 Scrapy是为持续运行设计的专业爬虫框架,提供操作的Scrapy命令行. Scrapy命令行格式 Scrapy常用命令 采用命令行的原因 命令行(不是图形界面)更容易自动化,适合脚本控制本质上,Scrapy是给程序员用的,功能(而不是界面)更重要. 二.Scrapy爬虫的一个基本例子 演示HTML页面地址:http://python123.io/ws/demo.html 步骤一:建立一个Scrapy爬虫 选取一个文件夹,

数据之路 - Python爬虫 - Scrapy框架

一.Scrapy框架入门 1.Scrapy框架介绍 Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,榄块之间的榈合程度低,可扩展性极强,可以灵活完成各种需求. Engine:引擎,处理整个系统的数据流处理.触发事务,是整个框架的核心. Item:项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item对象. Scheduler:调度器,接受引擎发过来的请求并将其加入队列中, 在引擎再次请求的时候将请求提供给引擎. Downloader:下载

Python爬虫Scrapy框架入门(2)

本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写xpath表达式,获取信息.自动爬取策略是,找到翻页网页元素,获取新链接地址,执行翻页.网页分析部分不再赘述,原博讲的很好很清楚,很涨姿势 基于拿来主义,我们只需要知道怎么更改Scrapy框架就行了~ items.py: import scrapy class TestprojItem(scrapy

python爬虫Scrapy框架之中间件

Downloader Middleware处理的过程主要在调度器发送requests请求的时候以及网页将response结果返回给spider的时候, 所以说下载中间件是结余Scrapy的request/response处理的钩子, 用于修改Scrapy request和response. 编写自己的下载器中间件 : 编写下载器中间件, 需要定义下一或者多个方法的python类 新建一个关于爬取httpbin.org网站的项目 scrapy startproject httpbintest cd