2017-04-14 15 views
1

ここでコードを書いた方法では、私は別のサイトから結果を得ましたが、何らかの理由でこのサイトがエラーをスローします。私が治療の新しいコーダーであるので、私は自分自身で問題を解決する能力を持っていません。 Xパスは大丈夫です。Scrapy throws属性エラー

items.py

import scrapy 
class OlxItem(scrapy.Item): 
    Title = scrapy.Field() 
    Url = scrapy.Field() 

olxsp.py

from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 

class OlxspSpider(CrawlSpider): 
    name = "olxsp" 
    allowed_domains = ['olx.com.pk'] 
    start_urls = ['https://www.olx.com.pk/'] 

    rules = [Rule(LinkExtractor(restrict_xpaths='//div[@class="lheight16 rel homeIconHeight"]')), 
      Rule(LinkExtractor(restrict_xpaths='//li[@class="fleft tcenter"]'), 
      callback='parse_items', follow=True)] 

    def parse_items(self, response): 
     page=response.xpath('//h3[@class="large lheight20 margintop10"]') 
     for post in page: 
      AA=post.xpath('.//a[@class="marginright5 link linkWithHash detailsLink"]/span/text()').extract() 
      CC=post.xpath('.//a[@class="marginright5 link linkWithHash detailsLink"]/@href').extract() 
      yield {'Title':AA,'Url':CC} 

settings.py

BOT_NAME = 'olx' 
SPIDER_MODULES = ['olx.spiders'] 
NEWSPIDER_MODULE = 'olx.spiders' 

ROBOTSTXT_OBEY = True 

画像:私は、コードと一緒に、端末に何を参照してください添付しています治療終了後の端末の状態: enter image description here

+0

あなたのScrapyプロジェクトの設定を投稿することはできますか?また、投稿したトレースバックやエラーがスクリーンショット(検索可能ではない)ではなくテキストであることを確認してください。ありがとう。 – alecxe

+0

お返事ありがとうございました。私はsettings.pyでは何もしませんでした。とにかく、説明にそれを加えてください。 – SIM

答えて

1
  1. あなたはそれがクロールドメインのrobots.txtファイルをチェックするscrapyを伝えROBOTSTXT_OBEY = Trueを持っているので、これらのサイトに礼儀正しくする方法を決定することができます。

  2. allowed_domains = ['www.olx.com']に実際にクロールしているドメインと異なるドメインを許可しています。 olx.com.pkサイトのみをクロールする場合は、allowed_domains['olx.com.pk']に変更してください。クロールするサイトが実際にわからない場合は、allowed_domainsという属性を削除してください。

+0

お返事ありがとうございます。あなたの提案に応じて両方のパラメータを満足させることは結果をもたらすこともできませんでした。 – SIM

+0

新しいエラーは何ですか? – eLRuLL

+0

申し訳ありませんが、私のPCの周りにされていない。 "wrapped Request object"に属性タイプがありません。属性エラー14. – SIM