如何抓取我们正在抓取的网页上的关联网页中的数据

时间:2017-06-10 18:24:47

标签: python scrapy web-crawler scrapy-spider

我正在抓取这个网页上的大学名称,但是,我还想抓住这些大学的院系数量,如果通过点击大学的名称打开大学的特定网页,可以获得这些大学。

我应该在此代码中添加什么才能获得结果。 结果应该是[(name1,faculty1),(name2,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(),                   
            }

1 个答案:

答案 0 :(得分: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中搜索到的最后一页上的数据也可用,您可能需要考虑不将其发送到元数据中,而只是将其从最后一页中删除。