Scrapy框架安装

操作环境介绍

操作系统:Ubuntu19.10

Python版本:Python3.7.4

编译器:pycharm社区版

安装scrapy框架(linux系统下)

安装scrapy框架最繁琐的地方在于要安装很多的依赖包,若缺少依赖包,则scrapy框架的安装就会报错。

不过anaconda环境中会自带lxml模块,可以免去一些步骤

在终端输入命令安装依赖包

sudo apt-get install python-devsudo apt-get install libevent-dev

根据提示输入y确认安装,耐心等待安装完成即可

安装完所需要的依赖包之后,就可以直接用pip安装scrapy框架了

pip install scrapy

在终端输入命令后,可能会出现网络响应超时等报错

经过几次的尝试之后,我认为这是软件源的问题导致下载过慢,建议更换清华的镜像源来安装

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

在命令的末尾加上-i来暂时使用指定的镜像源来安装scrapy框架

在排除其他问题的影响后,若安装速度依旧不理想,可多尝试几个源来安装

阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(douban) http://pypi.douban.com/simple/清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

ok,我们可以看到更换源之后的下载速度有了显著的提升,只需要等待几秒钟就可以看到安装成功的标志

检测安装是否成功

打开终端,输入命令查看scrapy版本

scrapy --version

看到类似下图所示的版本信息:

再输入命令

scrapy bench

这条命令是调用scrapy去爬取一个空网址的内容,再输入命令之后,看到scrapy正在运行去爬取空网址的内容即安装成功了这个框架

Scrapy框架爬取原理

Scrapy框架的主体结构分为五个部分:

Scrapy Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。

它还有两个可以自定义下载功能的中间件:

Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):一个可以自定扩展和操作引擎和Spider中间通信的功能组件。

Scrapy框架运行方式

由上图可以看出,引擎就相当于框架中的大脑,调配着其他部分的运作。

首先爬虫文件向引擎发送网址请求,在经由引擎将网址发送给调度器,调度器通过内部的函数将发来的网址进行队列操作,将排好队的网址重新发送回引擎。引擎接收到了发送回来的队列之后,便将请求交给下载器,由下载器从外部网页获取网页源码,将获取到的响应数据再发送回引擎。引擎接收到下载器发回的网页源码之后,再将数据传回爬虫文件,由爬虫文件负责对html数据的提取,等到数据提取完毕,再把数据发送给引擎。引擎对爬虫文件发送来的内容进行检测,若判断传过来的内容为数据,则引擎将数据发送给专门保存文件的管道数据,管道文件接收到发来的数据之后,就可以有选择的保存在数据库或文件中。

至此,一次完整的爬虫项目运行完成。

Scrapy框架实例

使用Scrapy爬取阿里文学

使用scrapy框架爬取的一般步骤

1.创建爬虫项目

2.创建爬虫文件

3.编写爬虫文件

4.编写items

5.编写pipelines

6.配置settings

7.运行scrapy框架

注:上面的步骤是使用scrapy的一般步骤,实际操作时可以根据爬取页面的难易度来调整这些步骤

1.创建爬虫项目

首先找到一个文件夹,用于保存项目的内容

打开终端,在该目录下输入:

scrapy startproject [项目名称]

成功创建

这时可以发现文件夹下多了一个以项目名称命名的文件夹

进入文件夹,发现里面已经有了框架的模板文件

init .py //初始文件

items.py//定义目标,想要爬什么信息

pipelines.py//爬后处理

middlewares.py//中间键

settings.py//文件的设置信息

2.创建爬虫文件

scrapy genspider [爬虫名] [想要爬取网址的域名]

注意:爬虫名一定不能与项目名一样,否则会创建失败

3.分析文件,编写爬虫文件

我们在上一步创建了爬虫文件之后会发现多出来一个py文件在项目名目录下

打开aliwx.py文件,开始分析网页,提取想要爬取的信息

打开阿里文学的官网首页,先设定我们想要爬取的内容为最近更新的书名及章节,使用xpath语法进行提取

打开项目文件夹下的spider文件夹,再打开我们刚刚所创建的爬虫文件

打开后可以看到一个基础的爬虫框架,我们要根据实际的需要来修改这个框架的内容

上面有红色箭头的地方就是我们主要修改的地方

首先将第一个指向的地址换成我们想要爬取的地址,即阿里文学的官网首页《 https://www.aliwx.com.cn/》

第二个地方就是我们设置爬取内容的定制项

import scrapyclass AliwxSpider(scrapy.Spider):    name = 'aliwx'    allowed_domains = ['aliwx.com.cn']    start_urls = ['https://www.aliwx.com.cn/']    def parse(self, response):        #选择所有a标签下的内容        selectors = response.xpath("//ul[@class='list']/li[@class='tr']/a")        # 循环遍历每一个a标签,使书名和最新章节可以一对一匹配        for selector in selectors:            #提取a标签下的书名 . 表示在当前标签下继续选择            book_name = selector.xpath("./span[2]/text()").get()            #提取a标签下的最新章节名            book_new = selector.xpath("./span[3]/text()").get()            #打印书名和章节名            print(book_name,book_new)

4.设置settings

打开settings文件,在文件中找到代码

这一行的意思是询问是否遵循 爬虫协议 ,大致来讲就是协议规范了我们只能提取网站允许我们提取的内容,所以此处应该将True提换成False,否则我们很有可能提取不到想要的内容

5.运行scrapy框架

打开终端,将目录切换至项目文件夹下,输入命令行来运行项目

scrapy crawl [爬虫名]

等待项目运行完毕,即可看到爬取到的内容:

6.将爬取下来的内容保存到文件

如果想要将内容保存到文件中,就需要设置一个返回值来储存

将print(book_name,book_new)语句替换

items = {                'name': book_name,                'new': book_new,            }            yield items

再打开终端,输入运行并保存命令:

scrapy crawl aliwx -o book.csv

等待程序运行完成,就可以看到出现了一个book.csv文件在项目目录下,打开就是我们所保存的内容

到此为止一个最基本的爬虫项目就制作完成了,如果有哪里写的不好请大佬多多批评指正!

源码获取加群:850591259

scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!相关推荐

  1. scrapy获取a标签的连接_python爬虫——基于scrapy框架爬取网易新闻内容

    python爬虫--基于scrapy框架爬取网易新闻内容 1.需求[前期准备] 2.分析及代码实现(1)获取五大板块详情页url(2)解析每个板块(3)解析每个模块里的标题中详情页信息 点击此处,获取 ...

  2. python tag对象下有多个标签、属性_Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释...

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 如何利用Python爬虫库BeautifulSoup获取对象(标签) ...

  3. python获取id标签对应数据_Python--Scrapy爬虫获取简书作者ID的全部文章列表数据

    最近Python大火,为了跟上时代,试着自学了下.Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 今天我们就试着用Scra ...

  4. python cookie池_Python爬虫scrapy框架Cookie池(微博Cookie池)的使用

    下载代码Cookie池(这里主要是微博登录,也可以自己配置置其他的站点网址) 下载代码GitHub:https://github.com/Python3WebSpider/CookiesPool 下载 ...

  5. python scrapy爬虫视频_python爬虫scrapy框架的梨视频案例解析

    之前我们使用lxml对梨视频网站中的视频进行了下载 下面我用scrapy框架对梨视频网站中的视频标题和视频页中对视频的描述进行爬取 分析:我们要爬取的内容并不在同一个页面,视频描述内容需要我们点开视频 ...

  6. python爬虫模块_Python爬虫 --- Scrapy爬取IT桔子网

    目标: 此次爬取主要是针对IT桔子网的事件信息模块,然后把爬取的数据存储到mysql数据库中. 目标分析: 通过浏览器浏览发现事件模块需要登录才能访问,因此我们需要先登录,抓取登录接口: 可以看到桔子 ...

  7. boss直聘账号异常登不上_python爬虫Scrapy:爬取boss数据

    一.概述 学习python有一段时间了,最近了解了下Python的入门爬虫框架Scrapy,参考了文章Python爬虫框架Scrapy入门.本篇文章属于初学经验记录,比较简单,适合刚学习爬虫的小伙伴. ...

  8. python流行的爬虫框架_Python爬虫相关框架

    Python爬虫相关框架,Python的爬虫框架就是一些爬虫项目的半成品.比如我们可以将一些常见爬虫功能的实现代码写好,然后留下一些接口,在做不同的爬虫项目时,我们只需要根据实际情况,只需要写少量需要 ...

  9. 韦玮python视频教程下载_[课程学习]精通Python网络爬虫核心技术框架与项目实战韦玮PDF附源码 rar文件[101.68MB]-码姐姐下载...

    只需2积分精通精通Python网络爬虫核心技术.框架与项目实战,韦玮.pdf 大小:101.66MB | 2020-05-14 19:06:39 韦玮老师<精通python网络爬虫>源代码 ...

最新文章

  1. LabVIEW做一款科学计算器
  2. 六轴机器人 宝元系统_庆云大国重器上线六轴智能焊接机器人,锻造高质量发展硬核...
  3. 1.Redis安装以及常用命令
  4. 我为什么要这么功利?
  5. 不同角色进入使用不同功能_如何在不同页面上使用不同的Joomla CSS
  6. [bzoj1050 HAOI2006] 旅行comf (kruskal)
  7. 前端学习(932):mouseenter和mouseover区别
  8. OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式
  9. 队列的链式存储结构及实现
  10. 流量卡官网源码【全解无后门】 修复添加教程
  11. light task schedule的定时任务实现源码解析
  12. 叫板抖音,运营商入局短视频
  13. Android PackageManagerService分析三:卸载APK
  14. 安装MYSql Windows7下MySQL5.5.20免安装版的配置
  15. 计算机课flash课件,初识flash动画教学课件
  16. 力扣——算法入门计划第十四天
  17. 舵机工作原理及STM32驱动代码
  18. jwplayer +ffmpeg+red5 实现摄像头的直播
  19. L3 利用集中和发散思维
  20. 【制作fnt格式字体】 BMFont中文字体图集制作的方法~

热门文章

  1. 计算机jsp外文文献,计算机 JSP web 外文翻译 外文文献 .doc
  2. java连接access_关于k8s下使用Ingress保持长连接的异常情况排查
  3. oracle数据库编程实验2答案,Oracle数据库-作业2-答案
  4. 韵乐x5效果器ktv最佳参数_家庭ktv(卡拉ok)家庭影院ktv选购推荐攻略
  5. win8无线网络受限怎么办 win8网络受限的解决方法
  6. RTMP播放器开发填坑之道
  7. MySQL数据库索引及失效场景
  8. 单链表插入元素 注释 c语言,数据结构之无头单链表的相关练习题——C语言实现(详细注释)...
  9. vue 加载太慢_Vue首页加载过慢 解决方案
  10. redis查询所有key命令_三歪推荐:Redis常见的面试题