gpt4 book ai didi

python - 项目加载器在 scrapy 中无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:52 25 4
gpt4 key购买 nike

我正在尝试研究 scrapy 中的项目加载器,下面的代码无法正常工作:它只给我“start_url”值而不是“SUBJECT”和“CREATOR2”值(它们根本没有出现,不只是一个空槽)。我不明白为什么会这样。

我需要使用项目加载器,尤其是对于“CREATOR2”值,它有时在 xpath 上,有时在另一个 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()

最佳答案

我会在 XPath 中使用 |(或)。此外,使用小写的字段名称:

l.add_xpath('creator2', '//font[@size="+1"]/center//preceding-sibling::text()[normalize-space()] | //link[@rel="schema.DC"]//meta[@name="DC.creator"]//@content[normalize-space()]')

另外,如果你检查 Scrapy Shell 中的 XPath 表达式,你会发现它们实际上什么都不匹配:

$ scrapy shell http://www.aib.it/aib/sezioni/emr/bibtime/num-i-1/bucchion.htm
>>> response.xpath('//font[@size="+1"]/center//preceding-sibling::text()[normalize-space()]')
[]
>>> response.xpath('//link[@rel="schema.DC"]//meta[@name="DC.creator"]//@content[normalize-space()]')
[]

我怀疑发生这种情况是因为 Scrapylxml 解析这种特殊的格式不正确的 HTML 的方式。你需要调整你的表达方式,例如:

>>> response.xpath('//center/text()').extract_first()
u'Cinzia Bucchioni'

关于python - 项目加载器在 scrapy 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37256696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com