OAI-PMH フレームワークを使用するアーカイブからこの XML データをクロールするために、scrapy を使用しています。私は OAI-PMH が Scrapy にどのように影響するかについて正確にはあまり詳しくありませんが、次のコマンドを使用すると問題が発生するようです:
scrapy view http://fukushima.archive-disasters.jp/infolib/oai_repository/repository?verb=ListRecords&metadataPrefix=ndlkn
ブラウザで Web サイトを開く代わりに、次のようなメモ帳ファイルが開きます。
<?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.
metadataPrefix
XML に表示されるのは 3 行目だけです。
<request metadataPrefix="ndlkn" verb="ListRecords">
この Web サイトを Scrapy の「表示」コマンドで使用する方法はありますか?
また、scrapy シェルを介して XML データ自体にアクセスすることもできません。以前のバージョンの Scrapy では、使用後に を使用remove_namespaces()
してページ上のすべてのレコードにアクセスできましたsel.xpath('//record')
が、現在はそれが生成さ[]
れ、必要な正しい xpath を見つけるのに苦労しています。
次のコマンドは次のようになります。
scrapy shell http://fukushima.archive-disasters.jp/infolib/oai_repository/repository?verb=ListRecords&metadataPrefix=ndlkn
次に、典型的なスクレイピー出力:
>>> 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 を使用する必要がありますか?
長い質問で申し訳ありません。この 2 つの問題が関連しており、OAI-PMH が問題を引き起こしているのではないかと心配しています。これを分割する必要があるかどうか、または他の方法でより明確にする必要があるかどうかを教えてください.
編集:私は非常にばかげているように感じますが、問題に気づきました。URL にがあるため、 or&
を呼び出した後に引用符で囲むか、エスケープする必要があります。それは私の問題の両方を修正します!これが将来誰にも役立つことを願っています。scrapy view
scrapy shell