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

2023-11-06

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 解决Mybatis-plus高版本不向后兼容的问题

    mybatis plus插件后面的版本没有兼容低版本 即 不存在低版本中EntityWrapper这个类了 而该类采用数据库表真实字段名作查询条件 这样硬编码形式确实不友好 比如如果后面数据库表中字段更名那么所有涉及到的业务都需要去修改 且
  • 2021年五一建模B赛题+思路

    背景 随着我国经济的高速发展 城市空间环境复杂性急剧上升 各种事故灾害频发 安全风险不断增大 消防救援队承担的任务也呈现多样化 复杂化的趋势 对于每一起出警事件 消防救援队都会对其进行详细的记录 某地有15个区域 分别用A B C 表示 各
  • ElasticSearch常用配置(内置账号密码修改、自定义角色自定义账号,日志定期删除等)...

    自定义内置账号 账户elastic为elasticsearch超级管理员 拥有所有权限 账户kibana用于kibana组件获取相关信息用于web展示 账户logstash system用于logstash服务获取elasticsearch
  • EasyAR脱卡方法

    首先说下大致思路 当卡片离开摄像头时间 ImageTarget Image的SetActive false 所以其子物体 model 也就不显示了 因此解决的办法就是在Target false 时间将模型放到一个合适的位置 这样就能实现脱卡
  • Fabric配置fabric-sample工程目录,并生成证书

    GitHub上的fabric sample工程 默认只有源码 缺少CA工具和加密工具 它需要从其他地方下载CA工具和加密工具 这里以fabric v1 4 0为例进行说明 步骤如下 1 下载fabric sample v1 4 0源码 官网
  • ABA问题

    这篇文章 http oceanbase org cn p 82 的第6小节讲述了Hazard Version的实现原理 它的设计思想最早由OB团队的席华锋提出 本文不再赘述 本文主要分享Hazard Version的实现要点 以及使用它实现
  • 【Hashmap】底层原理详解(JAVA 18)

    让我们在IDEA中打开HashMap源码 开始往下看 HashMap 继承自AbstractMap 实现了Map接口 HashMap类中定义了很多的默认值 比如默认初始容量 最大容量 加载因子等 HashMap底层基于数组 链表 红黑树 H
  • 【C++拷贝构造函数、深拷贝和浅拷贝】

    C 拷贝构造函数 深拷贝和浅拷贝的介绍与应用 1 引言 在C 中 拷贝构造函数和拷贝操作是用于创建对象的副本的重要概念 拷贝构造函数用于在创建新对象时初始化其值 而拷贝操作用于将一个对象的值复制到另一个对象 深拷贝和浅拷贝是两种不同的拷贝方
  • 针对Anaconda-navigator和spyder打不开的问题

    胡乱安装pyqt和qtpy等会导致qt的依赖混乱 以致于ananconda navigator和spyder会有打不开的情况发生 解决的办法有 1 常规套路 参考 https www cnblogs com zlslch p 8066662
  • EyygDlHuwc

    test
  • oracle 联机文档下载

    http www oracle com technetwork indexes downloads index html database setup2
  • dll破解

    1 安装Reflector 并用打开需要破解的Dll 分析并找到 需要调整的程序段 2 采用ildasm exe 将 dll 编译为 IL文件 3 采用UltraEdit NotePad 打开IL文件 找到对应的IL 代码 并将其修改 4
  • Spring前后端传递参数的几种方法(转)

    Spring前后端传递参数的几种方法 转 原文链接 一 准备工作 1 建立HelloController类 2 在webapp下建一个hello html文件 hello html文件中写一个表单 二 传值方法 1 使用servlet 通过
  • MongoDB:常用命令

    1 查询指定字段 db matrixSignals find id 607d9de3d95bfe9620234f2f 2 清空 db myCollection remove
  • Caused by: com...MySQLNonTransientConnectionException: Public Key Retrieval is not allowed 的解决办法

    问题概述 关于这个是在新开子工程中遇到的 本工程使用的Mysql 8 x的 拉取项目启动时遇见问题 com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionException P
  • MEMS麦克风已成消费市场的主流产品选择

    ECM和MEMS麦克风的技术差异 随着麦克风应用的增加 对麦克风的灵敏度和体积的要求也越来越高 目前用来构建麦克风的两种最常见的技术是MEMS和驻极体电容 以下将先介绍MEMS和驻极体电容麦克风 ECM 的基础知识 比较技术之间的差异 并概
  • 图像变换与平面坐标系的关系

    转载自 1 http blog csdn net tangyongkang 2 https zhuanlan zhihu com p 74597564 坐标旋转变换公式 围绕原点 如图 在二维坐标上 有一点 直线 的长度为r 直线 和 轴的
  • 如何把GITLAB设置为简体中文

    如何把GITLAB设置为简体中文 直接步入正题 如图所示 登录git首页是这样 咱们需要点击个人头像下的preference 将跳转网页拉取到最下面 会有language一栏 将English改为简体中文 然后保存设置即可
  • 华为OD机试真题- 最多提取子串数目【2023Q1】【JAVA、Python、C++】

    题目描述 给定由 a z 26个英文小写字母组成的字符串A和B 其中A中可能存在重复字母 B中不会存在重复字母 现从字符串A中按规则挑选一些字母 可以组成字符串B 挑选规则如下 1 同一个位置的字母只能被挑选一次 2 被挑选字母的相对先后顺
  • 获取标签内部全部文本的几种方式

    运用scrapy框架爬取所需要的内容 我在百度贴吧中找了一篇小说 我来只爬取楼主的文本信息 下面为初始代码 import scrapy import re class XiaoshuoSpider scrapy Spider name xi