我正在抓取这个网页上的大学名称,但是,我还想抓住这些大学的院系数量,如果通过点击大学的名称打开大学的特定网页,可以获得这些大学。
我应该在此代码中添加什么才能获得结果。 结果应该是[(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(),
}
答案 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
中搜索到的最后一页上的数据也可用,您可能需要考虑不将其发送到元数据中,而只是将其从最后一页中删除。