欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

爬虫5:如何取Table中的值

程序员文章站 2024-03-20 17:57:58
...
 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