爬虫5:如何取Table中的值

 def detail(self, response):
        item = response.meta['item']

        # 名称
        item['disease_name'] = response.xpath('/html/body/section[1]/header/div[1]/a/h1/text()').extract()[0]

        # 根据一级class和二级class获取到可能疾病
        #extract获取的结果是一个列表
        disease_list = response.xpath("//*[@class='dis']//*[@class='name']/a/text()").extract()

        # 依次遍历所有的疾病,取出来是str类型
        for i in range(0, len(disease_list)):
            item['maybe_disease'] = disease_list[i]

            # 获取到伴随症状response.xpath("//*[@class='dis']/a2/text()").extract()
            item['bansui_symptons'] = response.xpath(
                "//*[@class='dis']//tr[" + str(i + 2) + "]/td[2]/a/text()").extract()
            # 依次遍历所有的症状
            str2 = '' #将str2设置为空,不然每次的结果都会把上一次结果加进来
            #将伴随症状从列表中取出来
            for j in item['bansui_symptons']:
                str2 += j + '   '
            item['bansui_symptons'] = str2
            # 就诊科室
            item['jz_keshi'] = response.xpath("//*[@class='dis']//tr[" + str(i + 2) + "]/td[3]/a/text()").extract()
            # 遍历所有的科室
            str3 = ''
            for k in item['jz_keshi']:
                str3 = k + '  '
            item['jz_keshi'] = str3
            #设置睡眠时间,方式爬取速度过快导致封号
            time.sleep(random.random() * 3)

            yield item

猜你喜欢

转载自blog.csdn.net/u014229742/article/details/81867364
今日推荐