scrapy入门(一)

开启你的第一个scrapy项目

scrapy 初入门(二)

1. 新建scrapy项目

scrapy startproject projectname


2. 新建spider(需要进入 创建后产生的spider文件夹)

scrapy genspider spider_name spider_domain

其余相关操作
  • scrapy genspider -l 查看其他可用模板 新建spider
  • scrapy genspider -t crawl spider_name spider_domain 选择其他模板新建spider 新建spider
  • scrapy shell url 用交互窗口直接抓取页面, 返回response对象 和spider中的parse方法中的 response参数相同,用来进行页面解析实验,避免多次访问
  • scrapy shell -s USER_AGENT="Mozilla/5.0" url 添加请求头访问

3. 启动爬虫

scrapy crawl spider_name

其余启动爬虫命令
  • scrapy parse --spider==spider_name url 需要在 spider的parse模块中添加log方法 才会在终端中显示 例如
     
class BasicSpider(scrapy.Spider):
   name = 'basic'
   allowed_domains = ['xxx']
   start_urls = ['https://xxx']

   def parse(self, response):
       price = response.xpath('//*[@class="h3-responsive"]/text()').re('\d+')
       self.log(price)  # 打印在终端
       title = response.css('.adStd.threeLine>div>a>span').xpath('.//text()').extract()
       self.log(title)
       desc = response.css('.adStd.threeLine>span>span').xpath('.//text()').extract()
       self.log(desc)
       url = response.css('.adStd.threeLine>a>span').xpath('.//text()').extract()
       self.log(url)
       image_urls = response.css('.adStd.threeLine').xpath('./a/@href').extract()
       self.log(image_urls)

4. 填充Item --为之后的存储做准备

以之前的代码为例:
spider_name.py

class BasicSpider(scrapy.Spider):
    name = 'basic'
    allowed_domains = ['xxx']
    start_urls = ['https://xxx']

    def parse(self, response):
        item = BasicItem()  # 从items.py中导入
        item['price'] = response.xpath('//*[@class="h3-responsive"]/text()').re('\d+')  # 改写为字典形式
        item['title'] = response.css('.adStd.threeLine>div>a>span').xpath('.//text()').extract()
        itme['desc'] = response.css('.adStd.threeLine>span>span').xpath('.//text()').extract()
        item['url'] = response.css('.adStd.threeLine>a>span').xpath('.//text()').extract()
        item['image_urls'] = response.css('.adStd.threeLine').xpath('./a/@href').extract()
        return item

** 写入item之后 运行**
scrapy crawl spider_name 会在终端中打印出item中的东西

item的代码如下

class BasicItem(scrapy.Item):
    # primary field
    title = Field()  # 标题
    price = Field()  # 价格
    description = Field()  # 描述
    url = Field()  # 地址
    image_urls = Field()  # 图片地址

5. 将item存入文件
  • scrapy crawl spider_name -o items.json   json格式,网络数据通信常用
  • scrapy crawl spider_name -o items.jl   json行格式, 在大文件 比如1GB中, json需要加载1gb的内存, 而json行格式不用,类似迭代器的读取
  • scrapy crawl spider_name -o items.csv   excel 常用
  • scrapy crawl spider_name -o items.xml   xml 文档型
    存入其他位置 如 FTP 或 S3 存储桶
    • scrapy crawl spider_name -o "ftp://user:pwd@ftp.scrapybooj.com/items.json"
    • scrapy crawl spider_name -o "s3://aws_key:aws_secret@scrapybook/items.json"

现在进行
scrapy parse --spider=spider_name url
会显示已经抓取的item


存入数据库需要用Pipeline 中间件, 在之后的笔记中会记录

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值