第二十天:Scrapy 数据的保存

一. 数据的提取

1. 控制台打印

import scrapy
​
​class DoubanSpider(scrapy.Spider):
    name = 'douban'
    allwed_url = 'douban.com'
    start_urls = [
        'https://movie.douban.com/top250/'
    ]
​
    def parse(self, response):
        movie_name = response.xpath("//div[@class='item']//a/span[1]/text()").extract()
        movie_core = response.xpath("//div[@class='star']/span[2]/text()").extract()
        yield {
            'movie_name':movie_name,
            'movie_core':movie_core
        }

2. 以文件的方式输出

1)以python原生方式

with open("movie.txt", 'wb') as f:
    for n, c in zip(movie_name, movie_core):
        str = n+":"+c+"\n"
        f.write(str.encode())

2)以scrapy内置方式
scrapy 内置主要有四种:JSON,JSON lines,CSV,XML

将结果用最常用的JSON导出,命令如下:

scrapy crawl dmoz -o douban.json -t json

-o 后面是导出文件名,-t 后面是导出类型

二、提取内容的封装Item

Scrapy进程可通过使用蜘蛛提取来自网页中的数据。Scrapy使用Item类生成输出对象用于收刮数据

Item 对象是自定义的python字典,可以使用标准字典语法获取某个属性的值

1. 定义

import scrapy
​
​class InfoItem(scrapy.Item):
    # define the fields for your item here like:
    movie_name = scrapy.Field()
    movie_core = scrapy.Field()

2.  使用

def parse(self, response):
    movie_name = response.xpath("//div[@class='item']//a/span[1]/text()").extract()
    movie_core = response.xpath("//div[@class='star']/span[2]/text()").extract()
    
    for n, c in zip(movie_name, movie_core):
        movie = InfoItem()
        movie['movie_name'] = n
        movie['movie_core'] = c
        yield movie

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿梭的编织者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值