XPathItemLoader.add_xpath
不支持写入嵌套字段。您应该profile
手动构建您的 dict 并通过方法编写它add_value
(以防您仍然需要使用加载器)。或者,您可以编写自己的自定义加载程序。
这是一个使用示例add_value
:
from scrapy.contrib.loader import XPathItemLoader
from scrapy.item import Item, Field
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
class TestItem(Item):
others = Field()
class WikiSpider(BaseSpider):
name = "wiki"
allowed_domains = ["en.wikipedia.org"]
start_urls = ["http://en.wikipedia.org/wiki/Main_Page"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
loader = XPathItemLoader(item=TestItem(), response=response)
others = {}
crawled_items = hxs.select('//div[@id="mp-other"]/ul/li/b/a')
for item in crawled_items:
href = item.select('@href').extract()[0]
name = item.select('text()').extract()[0]
others[name] = href
loader.add_value('others', others)
return loader.load_item()
通过以下方式运行它:scrapy runspider <script_name> --output test.json
.
蜘蛛从主维基百科页面收集项目Other areas of Wikipedia
并将其写入字典字段others
。
希望有帮助。