2017-04-14 78 views
1

随着我在这里写代码的方式我从不同的网站得到的结果,但由于某种原因,这个网站抛出错误。由于我是scrapy的新编码员,因此我无法自行解决问题。 Xpaths是好的。我附加了我在终端看到的代码一起:Scrapy引发属性错误

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 

图像终端在scrapy完成运行后: enter image description here

+0

你还可以发布你的Scrapy项目设置?此外,请确保您发布的回溯和错误是文本,而不是截图(不可搜索)。谢谢。 – alecxe

+0

谢谢先生,谢谢你的回复。我在settings.py中没有做任何事情,而是保持原样。无论如何,在描述中也加上这一点。 – SIM

回答

1
  1. 您有ROBOTSTXT_OBEY = True,它告诉scrapy检查它所搜寻域的robots.txt文件,以便确定如何对这些网站进行礼貌。

  2. 您允许allowed_domains = ['www.olx.com']中的一个不同于您实际爬网的域名。如果您只想抓取olx.com.pk网站,请将allowed_domains更改为['olx.com.pk']。如果您实际上不知道要抓取哪些网站,请删除allowed_domains属性。

+0

感谢eLRuLL,感谢您的回应。根据你的建议满足这两个参数也不会带来任何结果。 – SIM

+0

那么新的错误是什么? – eLRuLL

+0

对不起,我的电脑。现在,它显示“包装的请求对象没有属性类型,属性错误14. – SIM