|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在某网页爬取人名、部门、个人详情、详情链接等信息。
现在是存在这种情况,在不同的部门中,存在相同的人名,对应着相同的详情连接和个人详情。但是scrapy只会抓取其中一个人的信息,会漏掉另外部门该人名的信息。
- import scrapy
- from zggcy.items import ZggcyItem
- import copy
- class YuanshiSpider(scrapy.Spider):
- name = 'yuanshi'
- allowed_domains = ['cae.cn']
- start_urls = ['http://www.cae.cn/cae/html/main/col53/column_53_1.html']
- def parse(self, response):
- item = ZggcyItem()
- for each in response.xpath('//div[@class="list2_navm clearfix"]/ul/li'):
- item['group'] = each.xpath('./a/text()').extract_first()
- item['type'] = '中国工程院院士'
- group_url = each.xpath('./a/@href').extract_first()
- group_url = response.urljoin(group_url)
- yield scrapy.Request(url=group_url, meta={'item': copy.deepcopy(item)}, callback=self.parse2)
- def parse2(self,response):
- item = response.meta['item']
- for each in response.xpath('//div[@class="right_md_ysmd"]/div/ul/li'):
- item['link'] = each.xpath('./a/@href').extract_first()
- item['name'] = each.xpath('./a/text()').extract_first()
- detail_url = each.xpath('./a/@href').extract_first()
- detail_url = response.urljoin(detail_url)
- yield scrapy.Request(url=detail_url, meta={'item': copy.deepcopy(item)}, callback=self.parse3)
- def parse3(self, response):
- item = response.meta['item']
- item['detail'] = ''.join(response.xpath('//div[@class="intro"]/p/text()').extract())
- yield item
复制代码
|
|