1

私はウェブサイトをスクレイピングしています、そしてそれはOがデータをフェッチする必要がある多くのURLを含んでいます。XPathを使用して、すべてhrefの(URL)をフェッチし、リストに保存しました。このリストをループして、リクエストを生成しました。以下は私のスパイダーコードです、

class ExampledotcomSpider(BaseSpider):
   name = "exampledotcom"
   allowed_domains = ["www.example.com"]
   start_urls = ["http://www.example.com/movies/city.html"]


   def parse(self, response):
       hxs = HtmlXPathSelector(response)
       cinema_links = hxs.select('//div[@class="contentArea"]/div[@class="leftNav"]/div[@class="cinema"]/div[@class="rc"]/div[@class="il"]/span[@class="bt"]/a/@href').extract()
       for cinema_hall in cinema_links:
            yield Request(cinema_hall, callback=self.parse_cinema)


   def parse_cinema(self, response):
       hxs = HtmlXPathSelector(response)
       cinemahall_name = hxs.select('//div[@class="companyDetails"]/div[@itemscope=""]/span[@class="srchrslt"]/h1/span/text()').extract()
       ........

たとえば、リストに60個のURLがあり、約37個のURLがダウンロードされていません。これらの場合、エラーメッセージが表示されます。

2012-06-06 14:00:12+0530 [exampledotcom] ERROR: Error downloading <GET http://www.example.com/city/Cinema-Hall-70mm-%3Cnear%3E-place/040PXX40-XX40-000147377847-A6M3>: Error -3 while decompressing: invalid stored block lengths
2012-06-06 14:00:12+0530 [exampledotcom] ERROR: Error downloading <GET http://www.example.com/city/Cinema-Hall-35mm-%3Cnear%3E-place/040PXX40-XX40-000164969686-H9C5>: Error -3 while decompressing: invalid stored block lengths

Scrapyがダウンロードしている一部のURLについてのみ、残りのURLについては、コードの何が起こっているのか、何が間違っているのかがわかりません。

誰かがこれらのエラーを取り除く方法を教えてもらえますか?

4

1 に答える 1

2

私はあなたのコードに何も悪いことはないと思います。

  • 解凍中のエラー-3:保存されたブロック長が無効です
  • CRCチェックに失敗しました0x471e6e9a!= 0x7c07b839L
  • 解凍中のエラー-3:無効なブロックタイプ

これらのエラーはすべて、gzip解凍に関連しているようです。アクセスしようとしているサイトに応答ヘッダーがあると思いますAccept-Encoding: gzip, deflate

gzip RFC 1952 [25]で説明されているように、ファイル圧縮プログラム「gzip」(GNU zip)によって生成されるエンコード形式。このフォーマットは、32ビットCRCを使用したLempel-Zivコーディング(LZ77)です。

http://en.wikipedia.org/wiki/HTTP_compressionも参照してください

だから私はそれがscrapyがダウンロードしようとしているページをホストしている壊れたウェブサーバーだと思います。

アップデート:

HttpCompressionMiddlewareを無効にしてみてください

于 2012-06-06T15:02:39.687 に答える