使用scrapy将itemloader逐项写入xml或csv

2024-05-18 08:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个讨厌鬼新手,写了下面的蜘蛛。我想用csv中的每一行或xml中的每一项作为name、tele、addr写入xml或csv。你知道吗

我正在使用命令: 刮痧爬abc-o项目.csv-t csv公司

我正在寻找输出:

name,addr,tele
n1,a1,t1
n2,a2,t2
n3,a3,t3

但我得到:

name,addr,tele
n1,n2,n3 a1,a2,a3 t1,t2,t3

蜘蛛代码

import scrapy

from abc.items import abcItem
from scrapy.contrib.loader import ItemLoader

class abcSpider(scrapy.Spider):
    name = "abc"
    allowed_domains = ["abc.com"]
    start_urls = ["abc.com/"]

    def parse(self, response):
        items = []
        l = ItemLoader(item=abcItem(), response=response)
        l.add_xpath('name', '//section[@class="abcrp"]/a/@title')
        l.add_xpath('tele', '//p[@class="abcw"]/a/@href')
        l.add_xpath('addr', '//span[@class="dn"]/text()')
        return l.load_item()

项目代码

import scrapy
class abcItem(scrapy.Item):
    name = scrapy.Field()
    addr = scrapy.Field()
    tele = scrapy.Field()

Tags: csvnameimportaddfieldresponsexmlxpath