【问题标题】:exporting data to seperate csv files in scrapy将数据导出到scrapy中的单独csv文件
【发布时间】:2019-10-29 19:37:17
【问题描述】:

我已经制作了一个爬虫,它可以访问这个网站https://www.cartoon3rbi.net/cats.html然后按照第一条规则打开每个节目的链接,通过 parse_title 方法获取它的标题,然后按照第三条规则打开每一集的链接并获取它的名称。它工作正常,我只需要知道如何为每个节目的剧集名称制作一个单独的 csv 文件,并将 parse_title 方法中的标题用作 csv 文件的名称。有什么建议吗?

# -*- coding: utf-8 -*-
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class FfySpider(CrawlSpider):
    custom_settings = {
        'CONCURRENT_REQUESTS': 1
    }
    name = 'FFy'
    allowed_domains = ['cartoon3rbi.net']
    start_urls = ['https://www.cartoon3rbi.net/cats.html']

    rules = (
        Rule(LinkExtractor(restrict_xpaths='//div[@class="pagination"]/a[last()]'), follow=True),
        Rule(LinkExtractor(restrict_xpaths='//div[@class="cartoon_cat"]'), callback='title_parse', follow=True),
        Rule(LinkExtractor(restrict_xpaths='//div[@class="cartoon_eps_name"]'), callback='parse_item', follow=True),
    )

    def title_parse(self, response):

        title =  response.xpath('//div[@class="sidebar_title"][1]/text()').extract()


    def parse_item(self, response):
        for el in response.xpath('//div[@id="topme"]'):
             yield {
                 'name': el.xpath('//div[@class="block_title"]/text()').extract_first()

             }

【问题讨论】:

标签: python csv web-scraping scrapy


【解决方案1】:

假设您将标题存储在列表titles 中,并将相应的内容存储在列表contents 中,您可以每次调用以下自定义函数write_to_csv(title, content) 将内容写入文件并通过名称<title>.csv。

def write_to_csv(title, content=''):
    # if no content is provided, 
    # it creates an empty csv file.
    with open(title+'.csv', 'w') as f:
        f.write(content)

for content, title in zip(contents, titles):
    write_to_csv(title, content)

【讨论】:

    猜你喜欢
    • 2019-09-17
    • 2012-08-27
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多