爬行

2014-01-27 30 views
3

Scrapy嵌套页我与嵌套页爬行挣扎。爬行

我只得到了项目以作为第一抓取的页面项目计数。

网站的结构会是这样。

  1. 抓取品牌 - 品牌链接
  2. 使用品牌链接去抓取模型和模型链接
  3. 使用型号链接去抓取特定的公告和它的属性。

假设品牌A有2个型号,第一个型号有11个公告,第二个型号有9个.B品牌有3个型号,每个型号有5个公告。

在上面的例子我需要获得各个公告为单独的项目(共35个),但代替的是我得到物品号码作为品牌等品牌A与第一公告,然后用第一次公告B品牌。

class SiteSpider(CrawlSpider): 
log.start(logfile="log.txt", loglevel="DEBUG", logstdout=None) 
name = "site" 
#download_delay = 2 
allowed_domains = ['site.com'] 
start_urls = ['http://www.site.com/search.php?c=1111'] 
items = {} 


def parse(self, response): 
    sel = Selector(response) 
    #requests =[] 
    brands = sel.xpath("//li[@class='class_11']") 
    for brand in brands: 
     item = SiteItem() 
     url = brand.xpath('a/@href')[0].extract() 
     item['marka'] = brand.xpath("a/text()")[0].extract() 
     item['marka_link'] = brand.xpath('a/@href')[0].extract() 
     request = Request("http://www.site.com"+url,callback=self.parse_model, meta={'item':item}) 
     # requests.append(request) 
     # 
     yield request 

def parse_model(self, response): 
    sel = Selector(response) 
    models = sel.xpath("//li[@class='class_12']") 
    for model in models: 

     item = SiteUtem(response.meta["item"]) 
     url2 = model.xpath('a/@href')[0].extract() 
     item ['model'] = model.xpath("a/text()")[0].extract() 
     item ['model_link'] = url2 

    return item 

你能帮助这个noobie用伪代码来实现吗?我猜想我在基础层面犯了一个错误。

+0

嗨保罗, 谢谢你的关心。我添加了我试图实现的代码。 我做它一步一步的做法,因为我是新来的Python和scrapy。 在第一个解析函数中,我试图获得品牌和品牌的链接。我能够做到这一点,并获得品牌的完整列表。但诀窍是它会将品种数量作为品牌数量。 它看起来像我想实现算法的问题。 – ielapoc

回答

5

parse_model你有一个项目创建一个循环,但没有产生他们,试图将其改为:

def parse_model(self, response): 
    sel = Selector(response) 
    models = sel.xpath("//li[@class='class_12']") 
    for model in models: 

     item = SiteUtem(response.meta["item"]) 
     url2 = model.xpath('a/@href')[0].extract() 
     item ['model'] = model.xpath("a/text()")[0].extract() 
     item ['model_link'] = url2 

     yield item 
+0

感谢您的帮助:) – ielapoc