このようなルールで SgmlLinkExtractor を使用してイメージマップからリンクを抽出するスクレイピークロールスパイダーがあります。
Rule(SgmlLinkExtractor(allow_domains=('pressen-haas.de'),
restrict_xpaths=('//map[@name="bildmaschinen"]')))
ご覧になりたい場合は、開始 URL はhttp://www.pressen-haas.de/neu//machines.php?lang=enです。結果の URL はhttp://www.pressen-haas.de/neu//masch_cat.php?lang=en&phid=0の形式で、phid パラメータは 0 から 8 までです。問題は、スパイダーがこれらのページを取得するときに、ブラウザーに URL を入力した場合にそこにあるすべての情報が利用できないことです。私はそれをテストするためにコールバックを書きました。
hxs = HtmlXPathSelector(response)
print hxs.select('//text()').extract()
そこにあるものを確認するには、ブラウザに URL を入力して 2 番目の URL パラメータ ( http://www.pressen-haas.de/neu/masch_cat.php?lang=en ) を削除した場合とまったく同じ結果が表示されます。
スパイダーが正しい URL をクロールしていることを確認しました。クロールされた URL をスパイダー出力ログからブラウザーにコピーでき、それらは正常に動作します。ブラウザーでこれらの URL を表示できるのに、スパイダーが別のものを表示するのはなぜですか?
前もって感謝します。