获取标签内部全部文本的几种方式

运用scrapy框架爬取所需要的内容。

我在百度贴吧中找了一篇小说,我来只爬取楼主的文本信息。下面为初始代码。

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')

这四种方法获取的文本信息均为以下表现形式

今后会有更多简单而且好用的方法,及时向大家分享。

猜你喜欢

转载自blog.csdn.net/qq_42543254/article/details/81410882
今日推荐