scrapy爬取数据写入json,csv,txt

最近上web课,有一门就是scrapy爬虫写入txt文件,自己也是找了很多种方法,最终实现

写入json或者csv

执行爬虫文件时添加  -o spidername.csv或者-o spidername.json

spider那么是你创建的爬虫的名字

json文件可能会出现乱码,在setting.js文件中设置编码格式即可

FEED_EXPORT_ENCODING='utf-8'

from scrapy import cmdline

cmdline.execute('scrapy crawl txms -o txms.csv'.split())

写入txt

 

首先设置setting.py文件,把遵循robots协议改为False

ROBOTSTXT_OBEY = False

然后再把ITEM_PIPELINES前边的注释取消掉

ITEM_PIPELINES = {
    'TXmovies.pipelines.TxmoviesPipeline': 300,
}

然后在pipeline.py中进行数据的处理


class TxmoviesPipeline:
    def open_spider(self, spider):
        self.file = open('txms.txt', 'w',encoding = 'utf-8')#encoding = 'utf-8'制定编码格式
        #爬虫开始运行时执行,创建文件并打开

    def close_spider(self, spider):
        self.file.close()
        #爬虫运行结束时关闭txt文件的写入

    def process_item(self, item, spider):
        try:
            res=dict(item)#将item转化为字典类型
            
            line=res['name']#参照你item里边获取的数据名字
            row=res['description']#参照你item里边获取的数据名字
            self.file.write(line+'\t'+row+'\n')  #写入文件
          
            print(item)#调试区输出爬取结果
            return item
        except:
            pass
好的,我知道了。首先,我们需要安装Scrapy库,可以使用以下命令进行安装: ``` pip install scrapy ``` 安装完成后,我们可以使用以下命令创建一个Scrapy项目: ``` scrapy startproject weather ``` 其中,weather是我们指定的项目名称。 接下来,我们需要进入到项目目录,并创建一个Spider: ``` cd weather scrapy genspider city_weather tianqi.com ``` 其中,city_weather是我们指定的Spider名称,tianqi.com是我们要爬取的网站。 打开生成的Spider文件,我们可以看到以下代码: ```python import scrapy class CityWeatherSpider(scrapy.Spider): name = 'city_weather' allowed_domains = ['tianqi.com'] start_urls = ['http://tianqi.com/'] def parse(self, response): pass ``` 在这里,我们需要填写我们要爬取的城市的URL,修改start_urls为: ```python start_urls = ['http://tianqi.com/beijing/'] ``` 接下来,我们需要定义我们要爬取的字段,包括日期、天气、温度等等。我们可以在parse函数中使用XPath或CSS选择器来提取数据,并将其存储到一个字典中: ```python def parse(self, response): date = response.xpath('//div[@class="day"]/ul/li/h1/text()')[0] weather = response.xpath('//div[@class="wea"]/text()')[0] temp = response.xpath('//div[@class="tem"]/span/text()') temp_max = temp[0] temp_min = temp[1] item = { 'date': date, 'weather': weather, 'temp_max': temp_max, 'temp_min': temp_min } yield item ``` 最后,我们需要将爬取到的数据存储到本地文件中。我们可以在settings.py中添加以下代码: ```python FEED_FORMAT = 'json' FEED_URI = 'weather.json' ``` 其中,FEED_FORMAT指定了存储格式(这里是JSON),FEED_URI指定了存储的文件名。 最终的Spider代码如下: ```python import scrapy class CityWeatherSpider(scrapy.Spider): name = 'city_weather' allowed_domains = ['tianqi.com'] start_urls = ['http://tianqi.com/beijing/'] def parse(self, response): date = response.xpath('//div[@class="day"]/ul/li/h1/text()')[0] weather = response.xpath('//div[@class="wea"]/text()')[0] temp = response.xpath('//div[@class="tem"]/span/text()') temp_max = temp[0] temp_min = temp[1] item = { 'date': date, 'weather': weather, 'temp_max': temp_max, 'temp_min': temp_min } yield item ``` 运行爬虫: ``` scrapy crawl city_weather ``` 运行完成后,我们可以看到在项目目录下生成了一个weather.json文件,其中包含了爬取到的天气数据。如果需要将数据存储到文本文件中,可以将FEED_FORMAT修改为'csv',并将FEED_URI修改为'weather.txt'。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

return you

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

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

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

打赏作者

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

抵扣说明:

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

余额充值