2017-06-10 20 views
1

我正在抓取此網頁上的大學名稱,但是,我也想抓取這些大學的院系數量,如果打開特定通過點擊學院的名稱來選擇大學的網頁。如何從我們正在爬行的網頁上的鏈接網頁抓取數據

我應該追加到這段代碼才能得到結果。 結果應該是在形式[(名稱1,faculty1),(姓名2,faculty2),...]

import scrapy 
class QuotesSpider(scrapy.Spider): 
    name = "student" 
    start_urls = [ 
     'http://www.engineering.careers360.com/colleges/list-of-engineering-colleges-in-karnataka?sort_filter=alpha', 
    ] 

    def parse(self, response): 
     for students in response.css('li.search-result'): 
      yield { 
       'name': students.css('div.title a::text').extract(),     
      } 

回答

2
import scrapy 
class QuotesSpider(scrapy.Spider): 
    name = "student" 
    start_urls = [ 
     'http://www.engineering.careers360.com/colleges/list-of-engineering-colleges-in-karnataka?sort_filter=alpha', 
    ] 

    def parse(self, response): 
     for students in response.css('li.search-result'): 
      req = scrapy.Request(students.css(SELECT_URL), callback=self.parse_student) 
      req.meta['name'] = students.css('div.title a::text').extract() 
      yield req 

    def parse_student(self, response): 
     yield { 
      'name': response.meta.get('name') 
      'other data': response.css(SELECTOR) 
     } 

應該是這樣的。 因此,您在請求的元數據中發送學生的姓名。 這允許你在你的下一個請求中請求它。

如果數據也在最後一頁上提供,您可以在parse_student中抓取,您可能需要考慮不要將其發送到元數據中,而只是從最後一頁中刪除它。

+0

我已將「SELECTOR」替換爲「h4.blockSubHeading :: text」,但是,我應該用什麼替換「SELECT_URL」? – Yash

+0

你提到你可以找到信息,如果你點擊大學的名字。所以你選擇該特定鏈接的網址,以便讓該網址上的數據在'parse_student'函數中可用。所以這可能是這樣的:'div.title> a'(然後選擇href屬性)。我通常不使用CSS選擇器,所以不能給你一個確切的選擇器。 – Casper