我正在使用 scrapy从使用OAI-PMH 框架的存档中抓取这些 XML 数据。我不太熟悉 OAI-PMH 如何影响 Scrapy,但是当我使用以下命令时似乎存在问题:
scrapy view http://fukushima.archive-disasters.jp/infolib/oai_repository/repository?verb=ListRecords&metadataPrefix=ndlkn
而不是在我的浏览器中打开网站,而是打开一个记事本文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8" ?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>
2013-12-30T00:11:45Z</responseDate>
<request>http://fukushima.archive-disasters.jp/infolib/oai_repository/repository</request>
<error code="badArgument">It is an inaccurate parameter.</error>
命令行上出现以下内容:
[default] INFO: Spider closed (finished)
'metadataPrefix' is not recognized as an internal or external command, operable program or batch file.
XML 中唯一出现的时间metadataPrefix
是在第 3 行:
<request metadataPrefix="ndlkn" verb="ListRecords">
有什么办法可以通过 Scrapy 的“查看”命令来使用这个网站?
此外,我也无法通过scrapy shell 访问XML 数据本身。在以前版本的 scrapy 中,使用后remove_namespaces()
我可以使用 访问页面上的所有记录sel.xpath('//record')
,但现在生成了[]
,我无法确定所需的正确 xpath。
以下是以下命令的外观:
scrapy shell http://fukushima.archive-disasters.jp/infolib/oai_repository/repository?verb=ListRecords&metadataPrefix=ndlkn
典型的scrapy输出,然后:
>>> sel.remove_namespaces()
>>> sel.xpath('//record')
[]
>>> sel.xpath('//OAI-PMH')
[<Selector xpath='//OAI-PMH' data=u'<OAI-PMH xmlns="http://www.openarchives.'>]
>>> sel.xpath('//OAI-PMH/request')
[<Selector xpath='//OAI-PMH/request' data=u'<request xmlns="http://www.openarchives.'>]
>>> sel.xpath('//OAI-PMH/ListRecords')
[]
我需要使用哪些 xpath?
对不起,很长的问题。我只是担心这两个问题是相互关联的,并且 OAI-PMH 在这里造成了问题。请让我知道我是否应该打破这个或任何其他方式我可以让它更清楚。
编辑:我觉得超级愚蠢,但我意识到了这个问题。因为 URL 中有一个,所以在调用or&
后需要加引号或转义。这解决了我的两个问题!希望这对将来的任何人都有帮助。scrapy view
scrapy shell