python爬虫框架之scrapy入门

安装scrapy 在cmd中运行

pip的安装方法python3.7 安装pip3
pip insatll scrapy

检测scrap安装情况

scrapy -h

scrapy爬虫框架结构

5+2结构
在这里插入图片描述

  1. Engine 控制所有模块之间的数据流 根据条件触发
  2. schdule 请求的调度
  3. Downloader: 根据请求下载网页 不需要用户修改
  4. engine 与 downloader之间的中间件叫downloader middleware 目的是实施engine schedule 和downloader之间进行用户可配置的控制 即修改 丢弃 新增请求或者响应
  5. spider
    – 解析downloader返回的响应
    –产生爬取项(即爬取自己需要的数据)
    – 产生额外的爬取请求(request)即爬取的网页值依旧含有我们感兴趣的连接则再次触发请求
  6. item piplines
    —以流水线的形式处理spider产生的数据项(数据的再次加工)
    –由一组操作顺序组成,类似流水线每个操作是一个item piplines类型
    – 可能的操作 清理 检验和查重爬取项中的html数据 将数据存储到数据库
  7. spider middle
    对请求和爬取项的再处理
    功能 修改丢弃 新增 请求和爬取项

scrapy 爬虫的常用命令

startproject 创建一个新工程 sracpy startproject <name> [dir]
genspider 创建一个爬虫 scarpy genspider <name> <domain>爬虫的名字 域名
settings 获得爬虫的配置信息 scrapy settings [options]
crawl 运行一个爬虫 scrapy crawl <spider>
list 列出工程中所有的爬虫 scrapy list
shell 启动url调试命令行 scrapy shell [url]

项目下执行的命令
scrapy check 进入项目后执行检查的操作 查看代码是否有错误
scrapy fetch --nolog --headers http://www.baidu.com 爬取网页的源代码
scrapy view http://www.baidu.com 查看爬取的网页并以网页的形式展示出来
scrapy parse http://www.baidu.com -callback func 在爬虫项目下 执行ing调用回调的函数func 进行处理文本
scrapy runspider program.py 执行program爬虫项目

scrapy选择器的使用对数据进行提取

xpath
  1. xpath 选择特定属性值的元素结合
    response.selector.xpath("//div[@id='images']").ewtract()
  2. xoath 选择标签的属性集合
    response.selector.xpath("//a/@href").extract()可以看出固定的格式就是("//tag/@attr") 查找的结果就是href的结果集
  3. xpath 获取文本的内容
    response.xpath("//a/text()") 可以看出固定的格式就是("//tag/text()")
  4. xpath 查找a元素里面包含image元素的数据 并返回该链接的href
    response.xpath("//a[contains(@href,'image')]/@href")
  5. xpath 获取a标签里面包含image属性的的src属性集合
    response.xpath("a[contains(@href,"image")]/img/@src").extract()
css
  1. css 选择文本信息
    response.selector.css("tag::text").extract_first()
  2. css选择属性的信息
    response.css("img:attr(src)").extract()
  3. css里面查找href 里面包含image的元素并返回 href
    response.css("a[href*=image]::attr(href)"),extract()
  4. css 获取a标签里面包含image属性的的src属性集合
    response.css("a[href*=image] img::attr(src)").extract()
re
  1. .re_first("正则表达式")

  2. extract_first() 返回的是查找到的第一个元素

遇到的bug

scrapy做爬虫时,导入Module的时候总显示no module named ×××.items?
此时需要将当前目录设置为根目录和eclipse一样的道理 scrapy项目上右键-》make_directory as–>sources root

数据的存储处理

  1. 命令行模式
    将爬取的数据存储成json格式命令
    scrpay crawl quotes -o quotes.json
    执行quotes爬虫 并将数据存储称为 quotes.json
    scrpay crawl quotes -o quotes.csv 存储称为csv格式的文件
    scrpay crawl quotes -o quotes.jl 存储成为jl的文件
    scrpay crawl quotes -o quotes.xml 存储称为xml文件
    存储到ftp服务器上面
    scrpay crawl quotes -o ftp://user:pass@ftp.example.com/path/quotes.csv
  2. 配置pipeline的模式
    我们通过spider中parse处理的数据传送到item/pipeline中后对数据进行继续的处理因此,操作要写在pipeline里面 pipeline里面书写的方式必须重写process_item的方法
        #jsonwritepipeline  将文件写到json文件中
    class JsonWritePipeline(object):
        def open_spider(self,spider):  #k开启爬虫就执行
            self.file = open("quote.jl","w") #不能写入二进制
        def close_spider(self,spider):
            self.file.close()  #关闭爬虫执行
    
        def process_item(self,item,spider):#处理从spider中parse过的item数据
            line = json.dumps(dict(item))+"\n"
            self.file.write(line)
            return item
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值