Python爬虫——Scrapy框架的基本使用
目录
1.选取目标站点
目标站点分析
2.流程框架
3.爬虫实战
创建项目
创建spider
输出调试信息
4.抓取:
1.分析源代码
2.爬取中的存储(数据结构)
3.定义解析的方法
3.命令行交互模式
4.赋值
5.翻页
6.保存
1.选取目标站点
目标站点分析
http://quotes.toscrape.com/:scrapy官方提供的抓取网站
显示名人名言,作者,标签等信息
翻页为最简单的GET请求,通过改变URL的名称进行翻页
网页结构简单,没有任何的反爬虫措施
2.流程框架
抓取第一页
请求第一页的URL并得到源代码,进行下一步的分析
获取内容和下一页链接
分析源代码,提取首页内容,获取下一页链接等待进一步获取
翻页提取
请求下一页信息,分析内容并请求再下一页链接
保存爬取结果
将爬取结果保存为特定格式如文本,数据库
3.爬虫实战
在命令行中输入scrapy会输出提示
创建项目
scrapy startproject quotetutorial
会在当前目录生成项目文件
cd quotetutorial 进入项目文件夹
scrapy.cfg:配置文件,定义scrapy一些相关的部署信息
创建spider
scrapy genspider quotes quotes.toscrape.com
quotes:spider名称
quotes.toscrape.com:需要爬取网站的域名
scrapy.cfg
items.py:保存数据的数据结构
middlewares.py:在爬取过程中定义的中间件,用来处理request,response和exceptions等操作,可以在其中修改request,response和exceptions的相关配置
pipelines.py:项目管道,用来输出一些items
settings.py:定义配置信息
主要运行代码在spiders文件夹中
解析的操作在parse函数中
scrapy crawl quotes:执行spider
输出调试信息
info:提示信息
scrapy.utils.log:显示已启动
2019-06-01 19:34:39 [scrapy.utils.log] INFO: Scrapy 1.6.0 started (bot: firstscrapy)
scrapy.crawler:settings
Overridden settings: {'BOT_NAME': 'firstscrapy', 'NEWSPIDER_MODULE': 'firstscrapy.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['firstscrapy.spiders']}
scrapy.middleware:中间件(下载中间件:downloadermiddlewares;爬虫中间件:spidermiddlewares)
INFO: Spider opened:调用spider,开始抓取
2019-06-01 19:34:41 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://quotes.toscrape.com/robots.txt> (referer: None)
2019-06-01 19:34:41 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/> (referer: None)
首先寻找robots.txt,没有返回状态码404,随后访问主页正常为200
statscollectors:输出爬取信息
quotes.py
改写代码:parse:请求完成后默认调用的方法/默认回调
eg:
def parse(self, response):print(response.text)
请求成功后将response的内容打印出来
4.抓取:
1.分析源代码
内容:text
作者:author
标签:tags(tags数量不固定,有几个抓几个)
2.爬取中的存储(数据结构)
items.py
定义field变量赋值,作为一个整体生成
3.定义解析的方法
quotes.py
11:定义选择每个区块
之后遍历每个区块,进一步筛选
13:声明对象
::text:选择标签内的文本内容
extract_first():拿到里面的文本内容
extract():把所有结果都找出来,类似于find和findall
3.命令行交互模式
scrapy shell quotes.toscrape.com
进入到交互模式下,可以进行一些相关的调试
爬取到的quotes为list格式,每一项为selector选择器
同为list
同为list,data类型为str
返回列表,内容为文本
返回第一个值
若为tags,就需要用extract()获取所有的标签
4.赋值
item['text'] = text
item['author'] = author
item['tags'] = tags
yield item#将item生成出来
再次运行,即可完成单页索引信息的爬取
5.翻页
1.可通过改变URL来完成翻页
2.在next中对应着下一页的超链接,从网页代码中获取
提取:
next = response.css('.pager .next a::attr(href)').extract_first()
attr():获取属性的内容
补全为完整的URL:
url = response.urljoin(next)
urljoin():补全URL
生成request,实现翻页循环:
url = response.urljoin(next)
callback:回调函数,定义response请求之后谁来处理
6.保存
保存为json格式
scrapy crawl quotes -o quotes.json
生成json文件并保存在项目目录下
保存为jl格式
scrapy crawl quotes -o quotes.jl
将结果保存为一行一行的格式,一行为一个item
保存为csv格式
scrapy crawl quotes -o quotes.csv
保存为xml格式
scrapy crawl quotes -o quotes.xml
其他格式同改后缀即可,如pickle,marshal等
保存至FTP服务器
scrapy crawl quotes -o ftp://user:pass@ftp.example.com/path/quotes.csv
pipelines
在保存前需要做item的处理,如在解析完后有些item不是我们想要的,如要将item保存到数据库里需要借助pipelines工具。
eg:限制名言的长度,如果大于50将后面的变为省略号
pipelines.py
class TextPipeline(object):def __init__(self):self.limit = 50def process_item(self, item, spider):if item['text']:if len(item['text']) > self.limit:item['text'] = item['text'][0:self.limit].rstrip() + '. . .'else:return DropItem('Missing Text')
保存至MongoDB数据库
pipelines中:
class MongoPipeline(object):def __init__(self):self.mongo_uri = 'localhost'self.mongo_db = 'quotestutorial'def open_spider(self, spider):self.client = pymongo.MongoClient(self.mongo_uri)self.db = self.client[self.mongo_db]def process_item(self, item, spider):name = item.__class__.__name__self.db[name].insert(dict(item))return itemdef close_spider(self, spider):self.client.close()
settings.py中:
ITEM_PIPELINES = {'firstscrapy.pipelines.TextPipeline': 300,'firstscrapy.pipelines.MongoPipeline': 400,
}
保存结果
Python爬虫——Scrapy框架的基本使用相关推荐
- Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...
- python爬虫--Scrapy框架--Scrapy+selenium实现动态爬取
python爬虫–Scrapy框架–Scrapy+selenium实现动态爬取 前言 本文基于数据分析竞赛爬虫阶段,对使用scrapy + selenium进行政策文本爬虫进行记录.用于个人爬虫学习记 ...
- Python爬虫—Scrapy框架—Win10下载安装
Python爬虫-Scrapy框架-Win10下载安装 1. 下载wheel 2.下载twisted 3. 下载pywin32 4. 下载安装Scrapy 5. 创建一个scrapy项目 6. fir ...
- Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider
Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider 写在前面 初探Crawl Spider 创建Crawl Spider项目 对比Basic与Crawl ...
- python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍
从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...
- python爬虫scrapy框架爬取网页数据_Scrapy-Python
scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...
- Python爬虫——Scrapy框架
Scrapy是用python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架.使用Twisted高效异步网络框架来处理网络通信. Scrapy架构: ScrapyEngine:引擎.负责控制 ...
- Python爬虫——scrapy框架介绍
一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等) ...
- Python爬虫——Scrapy框架(附有实战)
大家好!我是霖hero 有一天,我在逛街,突然被一声靓仔打断了我的脚步,回头一看,原来是水果摊阿姨叫我买水果,说我那么靓仔,便宜一点买给我,自恋的我无法拒绝阿姨的一声声靓仔,于是买了很多水果回家,家人 ...
- python爬虫scrapy框架基础
我使用的软件是pychram 最近几周也一直在学习scrapy,发现知识点比较混乱,今天来总结一下.我是按照<精通python网络爬虫核心技术框架与项目实战>这本书来写的.讲的比较简洁,想 ...
最新文章
- 洛谷1197星球大战
- 一阶暂态电路三要素法和三种响应
- WindowsService 安装后报错: 无法启动计算机“.”上的服务 解决方案
- 阿里云天池 Python训练营Task5:Python训练营测试 学习笔记
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
- 使用 Spark ML Pipeline 进行机器学习
- 程序员总被坑?这是GitHub上的一篇防骗指南
- 对华为HG255D路由器进行JTAG调试的进一步研究
- 如何实现和提升软件易用性
- 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论...
- 单机传奇找不到登陆器服务器列表,如果传奇服务端里面没有带登陆器怎么办?...
- 类似零基础学python的小说_就像看小说一样,让你一个小时学会Python零基础「强烈推荐」...
- 【Android studio】使用小米手机(MIUI8)真机调试
- Cannot cast ch.qos.logback.classic.servlet.LogbackServletContainerInitializer to javax.servlet.Servl
- php面试自我介绍结束语,面试自我介绍的结束语
- 相处模式计算机型,三天内,女朋友;大于三天,电脑:两性相处,“尺寸”很重要...
- 如何使用AMR M分析rtp流中的amr语音
- 解决Retrofit和RxJava 抛出异常报错问题
- MySQL--学习笔记
- 直扩 单音干扰抑制 matlab,单频干扰在直扩系统中的误码性能分析
热门文章
- 信息完全技术之Enigma密码机【MATLAB程序及软件APP实现】
- Kolmogorov复杂性 简介
- 【CQF Finance Class 3 债券】
- 度量学习Metric Learning
- 程序员35岁以后干什么?大龄程序员现状揭秘
- python3调用谷歌翻译_使用python3调用谷歌翻译成中文
- 西电计算机学院硕士生导师马,西安电子科技大学计算机学院研究生导师简介-周端...
- Exception in thread “main“ java.lang.NoSuchMethodException
- TS封装格式小白入门分析总结(二)之工具的使用
- Matlab中图形对象属性gcf使用