您当前的位置: 首页 >  scrapy
  • 2浏览

    0关注

    214博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第26篇-了解scrapy的基本使用

不愿透露姓名の网友 发布时间:2019-11-11 19:57:14 ,浏览量:2

提前声明:该专栏涉及的所有案例均为学习使用,如有侵权,请联系本人删帖!

文章目录
  • 一、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分布式的步骤

一、scrapy框架的介绍和安装

1.python安装scrapy模块

pip install scrapy

2.scrapy爬虫架构

  • Scrapy 是一个快速、高层次的基于 python 的 web 爬虫构架,它用于抓取web站点并从页面中提取结构化的数据。可以更容易构建大规模的抓取项目;
  • Scrapy 使用了 Twisted异步网络库来处理网络通讯。 异步处理请求,速度非常快。
  • Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
  • 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方法

使用start_requests方法,也可以替换默认的启动 优点:可以手动的设置初始url的一些request信息,比如可以自带meta参数,比如可以给他收到设置一些请求头。 在这里插入图片描述

四、配置文件settings.py的详细介绍
#==>第一部分:基本配置第二部分:并发与延迟第三部分:智能限速/自动节流:AutoThrottle extension第四部分:爬取深度与爬取方式第五部分:中间件、Pipelines、扩展第六部分:缓存            
关注
打赏
1657102503
查看更多评论
0.0391s