提前声明:该专栏涉及的所有案例均为学习使用,如有侵权,请联系本人删帖!
- 一、scrapy框架的介绍和安装
- 二、第一个scrapy案例
- 三、start_requests方法
- 四、配置文件settings.py的详细介绍
- 五、Scrapy的组件及其运行流程
- 六、管道文件pipeline
- 1.pipeline的作用
- 2.简单使用一下管道pipeline
- 3.管道文件的多个类
- 4.多个爬虫文件如何使用管道文件
- 5.管道中的其他方法
- 6.一些item pipeline的使用例子
- 7.注意事项
- 七、下载中间件middleware
- 1.常用的下载中间件方法
- 2.使用下载中间件写一个随机user-agent
- 3.使用下载中间件写代理IP
- 八、scrapy-redis分布式
- 1.scrapy-redis分布式
- 2.scrapy-redis拓展组件
- 3.scrapy-redis架构
- 4.使用Scrapy-redis分布式的步骤
1.python安装scrapy模块
pip install scrapy
2.scrapy爬虫架构
- Scrapy 是一个快速、高层次的基于 python 的 web 爬虫构架,它用于抓取web站点并从页面中提取结构化的数据。可以更容易构建大规模的抓取项目;
- Scrapy 使用了 Twisted异步网络库来处理网络通讯。 异步处理请求,速度非常快。
- Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
- Scrapy 可以使用自动调节机制自动调整爬行速度
第1步:安装好Scrapy模块后,cmd命令创建一个项目
scrapy startproject 项目名
第2步:创建好项目后,用pycharm打开项目
项目目录
第3步:在pycharm中的控制台创建一个爬虫spider
这里每个spider就相当于一个独立的爬虫脚本,域名可以随便输入一个,后期代码中可以进行更改
scrapy genspider spider_name 域名
第4步:在settings.py中,修改robots协议
第5步:在新建好的spider中,初始化start_urls列表
start_urls列表是该爬虫启动的时候,最先执行的爬虫,默认返回的爬虫response在parse函数中接收。
第6步:settings.py中添加请求头 如果要添加cookies的设置
第7步:在spider文件中的parse方法里测试是否能够获取到页面数据。
scrapy crawl 爬虫名 # 有日志启动
scrapy crawl 爬虫名 --nolog # 无日志启动
第8步:在items.py中,定义我们要爬取的字段是那些。
第9步:在spider中导item包,并在parse方法中实例化一个item
第10步:运行项目 取到xpath的列表后需要获取数据要使用的方法:
response.xpath返回一个selector对象,此对象可继续调用xpath元素及其方法
可以通过以下两个方法获取selector对象的字符串内容:
Extract_first(),相当于text[0]
Extract(),取出返回整个的list的么一个字符串内容
第11步:将数据保存到mongoDB中的操作步骤 将提取完全的item去yeild出来传入pipeline中间件
要使用popelines.py中的item,必须需要配置
在items.py中重新插入一个字段,加此字段是因为hash查询速度快且唯一
在popelines.py加入以下代码
import pymongo, hashlib
class MaoyanPipeline(object):
def __init__(self):
self.client = pymongo.MongoClient()
self.db = self.client['maoyan']
def get_md5(self, value): # hash查找更快
md5 = hashlib.md5()
md5.update(value.encode('utf-8'))
return md5.hexdigest()
def process_item(self, item, spider):
item['detail_hash'] = self.get_md5(item['detail_url'])
self.db['movie'].update({'detail_hash': item['detail_hash']}, {'$set': dict(item)}, True)
return item
查询数据库是否有数据
使用start_requests方法,也可以替换默认的启动 优点:可以手动的设置初始url的一些request信息,比如可以自带meta参数,比如可以给他收到设置一些请求头。
#==>第一部分:基本配置第二部分:并发与延迟第三部分:智能限速/自动节流:AutoThrottle extension第四部分:爬取深度与爬取方式第五部分:中间件、Pipelines、扩展第六部分:缓存
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?