Python——获取标签内部所有文本的方式

  获取标签内部全部文本的几种方式:(1)获取最外面的标签,遍历内部的所有子标签并获取标签文本;

                                                            (2)用正则去掉所有标签;

                                                            (3)/text()获取标签的文本,//text()获取标签以及子标签的文本;

                                                            (4)使用xpath('string(.)')这种方式获取所有文本并且拼接。

以一个网站为例:

初始代码:

import scrapy
import re
 
class XiaoshuoSpider(scrapy.Spider):
    name = 'xiaoshuo'
    allowed_domains = ['tieba.baidu.com']
    start_urls = ['https://tieba.baidu.com/p/4685013359']
 
    def parse(self, response):

 以下几种操作方式与初始代码相连获取文本:

1.获取最外面的标签,遍历内部所有的子标签,获取标签文本。代码如下:

# 首先我们先获取包裹所有内容的标签,在此基础上进行操作
info = response.xpath('//div[@class="l_post l_post_bright j_l_post clearfix  "]')
        for x in info :
            louzhu = x.xpath('.//div[@class="louzhubiaoshi_wrap"]').extract()
            # print(louzhu)
            if len(louzhu) != 0 :
                content = x.xpath('.//div[@class="p_content  "]/cc/div/text()').extract()
                for z in content:
                    with open('xiaoshuo.txt', 'a', encoding='utf-8') as f:
                        f.write(z)
                        f.write('\n')

2.用正则去掉多余的部分,代码如下:

  content_list = x.xpath('.//div[@class="p_content  "]/cc/div/text()').extract()
                # print(content_list)
                remove = re.compile(r'<.*?>', re.S)
                kongge = re.compile('\s')
                content = ''
                f = open('xiaoshuo.txt','a',encoding='utf-8')
                for x in content_list :
                    x = re.sub(remove,'',x)
                    x = re.sub(kongge,'',x)
                    content += x
                # print(content)
                f.write(content)
                f.write('\n')

3.用text()获取标签及标签文本,代码如下:

content_list = x.xpath('.//div[@class="p_content  "]//text()').extract()
                # print(content_list)
                remove = re.compile('\s')
                douhao = re.compile(',')
                content = ''
                f = open('xiaoshuo.txt','a',encoding='utf-8')
                for x in content_list :
                    x = re.sub(remove,'',x)
                    x = re.sub(douhao,'',x)
                    content += x
                f.write(content)
                f.write('\n')

 4.使用xpath('string(.)')这种方式获取所有的文本,代码如下:

 content_list = x.xpath('.//div[@class="p_content  "]').xpath('string(.)').extract()
                # print(content_list)
                f = open('xiaoshuo.txt','a',encoding='utf-8')
                remove = re.compile('\s')
                for x in content_list :
                    x = re.sub(remove,'',x)
                    f.write(x)
                    f.write('\n')

以上四种方式就是后去文本信息的方式。

 

你可能感兴趣的:(Python)