如何使用scrapy python在xmlfeed上循环遍历节点

时间:2012-09-04 15:23:41

标签: python xml scrapy

我喜欢scrapy并首次尝试xml feed,下面是我的代码

class TestxmlItemSpider(XMLFeedSpider):
    name = "TestxmlItem"
    allowed_domains = {"http://www.nasinteractive.com"}


    start_urls = [
        "http://www.nasinteractive.com/jobexport/advance/hcantexasexport.xml"
    ]
    iterator = 'iternodes'
    itertag = 'job'


    def parse_node(self, response, node):
        title = node.select('title/text()').extract()
        job_code = node.select('job-code/text()').extract()
        detail_url = node.select('detail-url/text()').extract()
        category = node.select('job-category/text()').extract()

        print title,";;;;;;;;;;;;;;;;;;;;;"
        print job_code,";;;;;;;;;;;;;;;;;;;;;"

        item = TestxmlItem()
        item['title'] = node.select('title/text()').extract()
        .......  
        return item

结果

  File "/usr/lib/python2.7/site-packages/Scrapy-0.14.3-py2.7.egg/scrapy/item.py", line 56, in __setitem__
    (self.__class__.__name__, key))
exceptions.KeyError: 'TestxmlItem does not support field: title'

总共有200多个项目,所以我需要循环并将节点文本分配给项目 但是这里所有结果都在我们打印时立即显示,实际上我们如何在使用xmlfeedspider

抓取xml文件时在节点上循环

1 个答案:

答案 0 :(得分:2)

来自Pablo Hoffman:

  

您的项目(TestxmlItem)中没有声明“title”字段。

您需要添加:

title = Field()