【问题标题】:Exporting data to csv after scraping data using scrapy使用scrapy抓取数据后将数据导出到csv
【发布时间】:2019-10-23 19:47:52
【问题描述】:

制作这个 scraper 可以正确抓取数据,但问题在于将其导出到 csv。默认的- o filname.csv不会以正确的顺序粘贴数据。需要一些指导。item['name'] 应该在第一列,item['link'] 在第二列。这是代码。

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


class YuSpider(CrawlSpider):
    name = 'yu'
    allowed_domains = ['farfeshplus.com',
                       'wintv.live']
    start_urls = ['https://www.farfeshplus.com/Video.asp?ZoneID=297']

    rules = (
        Rule(LinkExtractor(restrict_xpaths='//td[@class="text6"]'), callback='parse_item', follow=True),

    )

    def parse_item(self, response):
        items = WebscItem()
        for url in response.xpath('//html'):
            items['name'] = url.xpath('//h1/div/text()').extract()

            yield items

            frames = url.xpath('//iframe[@width="750"]/@src').extract_first()

            yield scrapy.Request(url=frames, callback=self.parse_frame)

    def parse_frame(self, response):
        items = WebscItem()
        URL = response.xpath('//body/script').extract_first()

        
        mp4 = re.compile(r"(?<=mp4:\s\[\')(.*)\'\]")
        link = mp4.findall(URL)[0]
       
        items['link'] = link
        yield items

【问题讨论】:

  • 这是元参数的使用发挥作用的时候。查看this answer 了解如何操作。

标签: python web-scraping scrapy


【解决方案1】:

你需要使用 FEED_EXPORT_FIELDS 在你的settings.py

【讨论】:

    【解决方案2】:

    如果您想将数据导出到 csv,您可以使用 Pandas。

    首先,您应该从您的文件中创建一个 Pandas-Dataframe,然后您可以将此数据帧导出到 csv:

    来自https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

    df = pd.DataFrame({'name': ['Raphael', 'Donatello'],
                       'mask': ['red', 'purple'],
                       'weapon': ['sai', 'bo staff']})
    df.to_csv()
    

    我不确定这是不是你要找的东西

    【讨论】:

    • 试过 pandas 但无法按照我在问题中所说的那样排列数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多