2016-03-12 3 views
0

Я хочу, чтобы создать сценарий Scrapy, чтобы очистить все результаты для компьютерных концертов в любой Craigslist подобласти: , например, здесь: http://losangeles.craigslist.org/search/cpg/ Этот запрос возвращает список многих статей, и я пытался скоблить title и href каждого из этих результатов (а не только на первой странице) безрезультатно, используя CrawlSpider и linkExtractor, но скрипт ничего не возвращает. я вставлять мой сценарий здесь, благодаряScrapy Craigslist сценарий

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

    class CraigspiderSpider(CrawlSpider): 
     name = "CraigSpider" 
     allowed_domains = ["http://losangeles.craigslist.org"] 
     start_urls = (
        'http://losangeles.craigslist.org/search/cpg/', 
     ) 

     rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//a[@class="button next"]',)), callback="parse_page", follow= True),) 

     def parse_page(self, response): 
      items = response.selector.xpath("//p[@class='row']") 
     for i in items: 
      link = i.xpath("./span[@class='txt']/span[@class='pl']/a/@href").extract() 
      title = i.xpath("./span[@class='txt']/span[@class='pl']/a/span[@id='titletextonly']/text()").extract() 
      print link,title 

ответ

0

По коду вставленной, parse_page:

  1. не возвращается/выход ничего, и
  2. содержит только одну строку: «элементы = response.selector ... "

Причина для № 2 выше в том, что петля for не имеет должным образом отступ.

Попробуйте отступа цикл for:

class CraigspiderSpider(CrawlSpider): 
    name = "CraigSpider" 
    allowed_domains = ["http://losangeles.craigslist.org"] 
    start_urls = ('http://losangeles.craigslist.org/search/cpg/',) 

    rules = (Rule(
     LinkExtractor(allow=(), restrict_xpaths=('//a[@class="button next"]',)), 
     callback="parse_page", follow= True)) 

    def parse_page(self, response): 
     items = response.selector.xpath("//p[@class='row']") 

     for i in items: 
      link = i.xpath("./span[@class='txt']/span[@class='pl']/a/@href").extract() 
      title = i.xpath("./span[@class='txt']/span[@class='pl']/a/span[@id='titletextonly']/text()").extract() 
      print link, title 
      yield dict(link=link, title=title) 
+0

Большое спасибо, ваш ответ помог мне пролить некоторый свет на эту проблему. У меня есть рабочая версия сейчас в моей учетной записи github. Я позже отредактирую свой вопрос, чтобы включить ссылку на мое репо. Благодаря! у нас отличный день –

+1

@ErnestoPM: Не стесняйтесь принимать этот ответ и повышать, если вам это очень понравилось. –