2
我试图在scrapy中学习物料装载机,下面的代码工作不正常:它给我提供了“start_url”值而不是“SUBJECT”和“CREATOR2”值(他们根本没有出现,不仅有空插槽)。我无法弄清楚它为什么这样做。项目装载机在scrapy中无法正常工作
我需要特别为“CREATOR2”值使用Item Loaders,它有时在xpath上,有时在另一个上。
import scrapy
from bibtime.items import BibtimeItem, BibtimeLoader
from scrapy.loader import ItemLoader
from scrapy.contrib.loader.processor import Identity
from scrapy.selector import Selector
class bibtimeSpider(scrapy.Spider):
name = "bibtime"
allowed_domains = ['www.example.com']
start_urls = [
www.example.com
]
def parse(self, response):
l = BibtimeLoader(item=BibtimeItem(), response=response)
start_url = response.request.url
l.add_xpath('CREATOR2', '//font[@size="+1"]/center//preceding-sibling::text()[normalize-space()]')
l.add_xpath('CREATOR2', '//link[@rel="schema.DC"]//meta[@name="DC.creator"]//@content[normalize-space()]')
l.add_value('start_url', start_url)
l.add_xpath('SUBJECT', '//link[@rel="schema.DC"]//meta[@name="DC.subject"][1]//@content[normalize-space()]')
return l.load_item()
它们都在项目文件中命名,xpath在测试仪上正常工作。
编辑:由于要求,这里的项目定义:
import scrapy
from scrapy.item import Item, Field
from scrapy.loader import ItemLoader
from scrapy.contrib.loader.processor import Identity
class BibtimeItem(Item):
CREATOR2 = Field()
SUBJECT = Field()
start_url = Field()
pass
class BibtimeLoader(ItemLoader):
#default_input_processor = Identity()
default_output_processor = Identity()
谢谢!但它无法正常工作。 –
@LaraM。你确定XPath表达式是正确的吗?此外,发布项目和项目加载器定义。谢谢。 – alecxe
添加了项目和加载程序定义。是的,我很确定,这里是一个例子的页面:view-source:http://www.aib.it/aib/sezioni/emr/bibtime/num-i-1/bucchion.htm –