2017-06-10 17 views
1

私はこのウェブページの大学名をクロールしていますが、これらの大学の学部の数をクロールしたい場合は、大学の名前をクリックして、大学のウェブページを開きます。クロールしているウェブページのリンクされたウェブページからデータをクロールする方法

結果を得るには、このコードに何を追加する必要がありますか? 結果は次のようなものであるべき

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) 
     } 

[...、(NAME1、faculty1)、(NAME2、faculty2)]の形式でなければなりません。 リクエストのメタデータに生徒の名前を送信します。 これにより、次のリクエストでリクエストできるようになります。

parse_studentでスクラップした最後のページでもデータが利用できる場合は、メタデータで送信せずに最後のページからスクラップすることを検討するとよいでしょう。

+0

"SELECTOR"を "h4.blockSubHeading :: text"に置き換えましたが、 "SELECT_URL"をどのように置き換えるべきですか? – Yash

+0

あなたは、あなたが大学の名前をクリックすると、情報を見つけることができると述べた。したがって、その特定のリンクのURLを選択して、そのURLのデータを 'parse_student'関数で利用できるようにします。つまり、これはおそらくこのようなものです: 'div.title> a'(そして、href属性を選択します)。私は通常、CSSセレクタでは動作しませんので、正確なセレクタを与えることはできません。 – Casper

関連する問題