Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)
上个博客写了: Scrapy的概念以及Scrapy的详细工作流程 https://blog.csdn.net/wei18791957243/article/details/86154068
1.scrapy的安装 pip install scrapy
2.创建Scarpy项目:
在cmd中进入到想要创建Scrapy项目的路径下(最好在已经创建好的pycharm的工程路径下,就不用导入Python编译器等): 输入命令创建:scrapy startproject scrapy的项目名称
创建之后,可以在pycharm中查看已经创建了什么,一个
items.py 可以预先定义好爬取那些字段
middlewares.py : 中间键
pipelines.py: 管道 , 进行数据的处理以及保存
settings.py : 整个项目的设置
spiders文件夹; 创建好的爬虫,创建好是空的
3.生成一个爬虫
首先cd 创建的scrapy的项目名
然后 scrapy genspider 爬虫名 域名(即爬取的范围)
然后进入到pycharm中查看生成的东西:
4.然后就可以写爬虫了, 这是一个专门测试scrapy的爬虫网站 :http://quotes.toscrape.com/ 里面是一些名言名句
在刚才创建好的爬虫名字的py文件里面写。
# -*- coding: utf-8 -*- import scrapyclass ScrapetestSpider(scrapy.Spider):name = 'scrapeTest' # 爬虫名'''允许爬取的范围'''allowed_domains = ['quotes.toscrape.com']'''最开始请求的url地址'''start_urls = ['http://quotes.toscrape.com/']def parse(self, response):"""处理start_url地址对应的响应"""# 爬取页面上的名言ret1 = response.xpath("//span[@class='text']//text()")print(ret1)
然后打印出这个名言,
5. 启动爬虫的框架:
首先cmd中进入到你刚才创建的项目路径下。
输入命令: scrapy crawl 爬虫名
(1)会打印出很多的东西,包括日志等等,
(2)看着有点乱,我们可以在settings.py加入下面设置
LOG_LEVEL = "WARNING"
然后在执行命令就可以了 : scrapy crawl 爬虫名
可以看到爬取的数据都在一个列表当中,列表当中的每个元素是一个Selector对象,
(3). 直接取出当中的数据 extract()方法,可以在代码中这样写
ret1 = response.xpath("//span[@class='text']//text()").extract()
然后在执行启动框架,运行命令,可以看到数据就取出来了
有关取值:
当使用extrat_first()的时候,如果xpath写错的话,取值的会是一个空值,None
6. pipelines管道的使用,
首先要在pipelines里面开启 ,在settings.py里面把这个注释去掉就行
是一个字典, 键代表位置,值代表距离引擎的远近,即权重
对值的解释: 我们可以定义多个pipeline,数据会先进行一个pipeline再进行一个pipeline,进入的pipeline的先后顺序就可以通过值来指定。值越小会先执行
爬虫名字.py:
# -*- coding: utf-8 -*- import scrapyclass ScrapetestSpider(scrapy.Spider):name = 'scrapeTest' # 爬虫名'''允许爬取的范围'''allowed_domains = ['quotes.toscrape.com']'''最开始请求的url地址'''start_urls = ['http://quotes.toscrape.com/']def parse(self, response):"""处理start_url地址对应的响应"""# 爬取页面上的名言text = response.xpath("//span[@class='text']//text()").extract()# 爬取页面上的作者aut = response.xpath("//small[@class='author']//text()").extract()for li in range(len(text)):item = {}item["author"] = aut[li]item["text"] = text[li]yield item
pipelines.py:# -*- coding: utf-8 -*-# Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.htmlimport json class MyspiderPipeline(object):def process_item(self, item, spider):with open("text.txt",'a') as f:f.write(json.dumps(item,ensure_ascii=False)+"\n")return itemprint("保存数据成功")
然后开启框架,查看保存的数据text.txt
Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)相关推荐
- Scrapy学习之第一个简单爬取小程序
1.首先,先安装scrapy模块,使用命令:pip install scrapy,安装如果出现error: Microsoft Visual C++ 14.0 is required错误的话可参考文章 ...
- Scrapy框架的学习(9.Scrapy中的CrawlSpider类的作用以及使用,实现优化的翻页爬虫)
1.CrawlSpider类通过一些规则(rules),使对于链接(网页)的爬取更具有通用性, 换句话说,CrawlSpider爬虫为通用性的爬虫, 而Spider爬虫更像是为一些特殊网站制定的爬虫. ...
- scrapy框架_Python学习之Scrapy框架
爬虫界江湖地位No.1 说起Python,不得不说到它的爬虫应用,由于Python的短小精悍,用它来开发爬虫应用是最合适不过了,基于Python抓取网页的库有很多,例如requests,beatifu ...
- Scrapy框架的学习(1.scrapy的概念以及scrapy的工作流程)
scrapy的概念 1.为什么要学习Scrapy? 因为会让我们的爬虫更快.更强 2.什么是scrapy? (1) Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现 ...
- Scrapy框架的学习(10.Scrapy中的模拟登陆(使用cookie模拟登陆))
1. 为什么需要模拟登陆? 获取cookie,能够爬取登陆后的页面的数据 2.使用cookie模拟登陆的场景 (1) cookie过期时间很长,常见于一些不规范的网站 (2) 能在cookie过期之前 ...
- scrapy框架下的两个爬虫分工合作爬取智联招聘所有职位信息。
爬虫一 本次爬取为两个爬虫,第一个爬虫爬取需要访问的URL并且存储到文本中,第二个爬虫读取第一个爬虫爬取的URl然后依次爬取该URL下内容,先运行第一个爬虫然后运行第二个爬虫即可完成爬取. 本帖仅供学 ...
- 18-爬虫之scrapy框架请求传参实现的深度爬取(全站爬取)05
请求传参实现的深度爬取 深度爬取:爬取的数据没有在同一张页面中(首页数据+详情页数据) 在scrapy中如果没有请求传参我们是无法进行持久化存储数据的 实现方式: scrapy.Request(url ...
- 利用scrapy简单爬取新片场前20页视频数据,并存入mysql数据库
1.创建Scrapy项目 scrapy startproject XPC 2.进入项目目录,使用命令genspider创建Spider(注意后面允许爬取的域要增加) scrapy genspider ...
- 爬虫学习(12):爬取诗词名句网并且下载保存
用BeautifulSoup爬取并且下载.仅仅用作学习用途哈,不然又侵权了. 效果: 由于我是正在自学爬虫,不是很能找到非常优化的办法,是一名计算机大二学生,代码可能不是很好,还请大神指点,这是我扣扣 ...
最新文章
- R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息、获取更独特的有新意的关联规则
- [CF1042F]Leaf Sets
- DIY穷人版谷歌眼镜,自定义手势操控,树莓派再一次被开发新玩法
- 高级学员:2015年10月24日作业
- Homography
- node --- 模块化连接MongoDB数据库的参数设置方案之一
- P4254-[JSOI2008]Blue Mary开公司【李超树】
- SpringBoot +Lombok注解精华篇
- 三十二楼层选几层最好_买房子选几层最好?网友:我是按这个公式来计算黄金楼层,你咋看?...
- 拼音模糊查询+java,Java将汉语转换成拼音,用于字母的模糊查询
- 超像素分割算法研究:SLIC分割算法原理讲解
- 计算机毕业设计jsp酒店管理系统
- Assembler如何把跳转汇编变成机器码的(一)
- POJ 1581 A Contesting Decision
- C#编写的winform程序绑定comboBox成功,添加一个默认的文字选项请选择
- 51单片机内部外设:实时时钟(SPI)
- 人工智能应用最多的七大领域解析
- 斐波拉契数列 java实现
- 自动化运维学习--python
- 使用.net 操作 微信公众平台 —— 接收用户操作