使用scrapy抓取数据后将数据导出到csv

时间:2019-10-23 19:47:52

标签: python web-scraping scrapy

使用此抓取工具可以正确抓取数据,但问题是将其导出到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

2 个答案:

答案 0 :(得分:2)

您需要使用 settings.py中的FEED_EXPORT_FIELDS

答案 1 :(得分:0)

如果要将数据导出到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()

我不确定这是否是您要找的