首页 > 编程语言 >Python采集html页面时如何去除掉script,link等指定html标签

Python采集html页面时如何去除掉script,link等指定html标签

时间:2023-12-27 15:55:22浏览次数:32  
标签:script Python 标签 tags remove html 去除 源码

python爬虫去除html中特定标签、去除注释、替换实体
前言:本文主要讲w3lib库的四个函数

html.remove_tags()
html.remove_tags_with_content()
html.remove_comments()
html.remove_entities()

remove_tags
作用:去除或保留标签,但是仅仅是去除标签,正文部分是不做处理的

 


看其函数具有四个变量,

第一个是文本,即你需要传入的网页源码,必须是字符串

第二个是你要去除掉的标签,需要传入的参数类型是元组,原理是根据正则匹配去除的

第三个是你要保留的标签,需要传入的参数类型依旧是元组

第四个是编码

看备注我们可以得知,第二第三个参数总共有四种状态
which_oneskeepwhat it does
非空 去除掉所有 which_ones里面的标签
非空 只保留keep里的标签
去除所有的标签
非空 非空 不允许的情况

代码示例:
以下的代码以example.com的部分源码进行测试

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>

 


from w3lib import html
import requests
from lxml import etree

res = requests.get("http://www.example.com/")
response = etree.HTML(res.content)
temp = response.xpath('//body') # 返回值为一个列表
doc = etree.tostring(temp[0])   # 将定位到的元素转成str,即获得源码

# 以上代码只是为了获取body的源码,与函数演示无关

result = html.remove_tags(doc) # 标签全部去除
print(result)

只留下正文部分

 

result = html.remove_tags(doc,which_ones = ('body','h1','div'))

 

p标签与a标签还留着

 




remove_tags_with_content
作用:去除标签,包括其正文部分

 

参数变成了三个,与上面的用法一致,只是少了一个keep参数,无法保留,只能去除

remove_comments
作用:去除掉网页的注释

参数只有两个,一个是text(网页源码),str类型,一个是编码(encoding)

from w3lib.html import remove_comments
remove_comments(b"test <!--textcoment--> whatever")

 


结果即test whatever

remove_entities
作用:将网页中的一些特殊字符的源码显示改变成正常显示(个人理解)

官方解释是通过将实体转换为相应的unicode字符,从给定的text中删除实体。

在函数源码中已声明,该函数即将被剔除,将被replace_entities取代

 

函数具有三个参数,第一个是源码(字符串),第二个是你需要保留不变的实体(元组),第三个是是否删除无法转换的实体(true删除,false不删除),第四个是编码,默认utf-8

from w3lib.html import replace_entities
print(replace_entities(b'Price: &pound;100'))

以下为结果
Price: £100

标签:script,Python,标签,tags,remove,html,去除,源码
From: https://www.cnblogs.com/shanhubei/p/17930740.html

相关文章

  • script, first, second, third = argv
    fromsysimportargv#从Python的特性库中引入argv特性到自己的脚本中#readtheWYSSsectionforhowtorunthisscript,first,second,third=argv#解包argv,并依次赋值给左边的变量print("Thescriptiscalled:",scr......
  • python代码pycharm 中可以运行 vscode无法运行
    问题:pycharm中可以运行,切到vscode中时无法运行,都是路径无法读取到导致模块无法加载。分析:主要原因有可能是VSCode默认使用项目文件夹根目录作为工作目录(cwd),这会使得子文件夹中的程序无法使用相对路径。vscode中设置一下:文件=>首选项=>设置中搜索ExecuteinFileDir,......
  • centos 7.9 安装 python 3.10.5 和 openssl 3.0.12
    centos编译安装python和openssl安装环境:centos7.9:python3.10.5和openssl3.0.12centos6.10:python3.10.5和openssl1.1.1两个环境都能安装成功,可以正常使用。安装openssl下载地址下载后解压,进入到解压目录执行:./Configure--prefix=/usr/local/openssl3.......
  • 怎么用 python 项目函数实现字符串反转
    字符串反转是一个常见的操作,可以通过Python函数轻松实现。在本文中,我们将探讨如何使用Python函数来反转字符串,无论是针对单个字符串还是列表中的多个字符串。1.反转单个字符串要反转单个字符串,我们可以使用Python的切片功能或者内置的reversed()函数。使用切片功能defrevers......
  • Python 爬虫与网络安全有什么关系
    Python爬虫和网络安全之间存在密切的关系。爬虫是一种用于自动化从网络上获取信息的程序,而网络安全是保护计算机网络和系统免受未经授权的访问、攻击和数据泄露的实践。本文将探讨Python爬虫与网络安全之间的关系以及如何在爬虫开发中注意网络安全。爬虫的作用和风险爬虫通常用于从......
  • 怎样实现使用python实现自动排班
    自动排班是一项常见的任务,可以使用Python编程语言来实现。本文将介绍如何使用Python实现自动排班的步骤和技术。步骤一:收集排班需求和数据首先,您需要收集排班的需求和相关数据。这可能包括员工的工作时间、班次要求、休假时间等。您可以将这些数据存储在Excel表格、数据库或其他数......
  • 如何快速还原Python内置模块的功能
    Python作为一门开源的编程语言,提供了丰富的内置模块和库,使开发者能够快速开发各种应用。然而,有时候我们可能在使用内置模块时不小心修改了其源代码,导致功能不正常或无法正常使用。本文将介绍如何快速还原Python内置模块的功能,以便恢复正常的开发环境。步骤一:确认问题首先,我们需要确......
  • 解决Python项目部署到服务器上的编码问题
    在将Python项目部署到服务器上时,经常会遇到编码问题,例如中文乱码、字符集不匹配等。这些问题可能导致项目无法正常运行或显示正确的内容。本文将介绍如何解决Python项目部署到服务器上的编码问题,以确保项目能够在服务器上正常运行。步骤一:确认编码问题首先,我们需要确认是否存在编码......
  • html复制文本逻辑
    //复制文本functioncopyTxt(text){if(navigator.clipboard){navigator.clipboard.writeText(text)$Sys.notify('复制成功')}elseif(document.execCommand){letinput=document.createElement(�......
  • Python windows下subprocess模块 cwd 参数不支持相对路径
    前言全局说明Pythonwindows下subprocess模块cwd参数不支持相对路径一、问题程序要执行命令,用到了subprocess模块,并指定了cwd运行路径,在MAC系统下运行正常,在Windows下运行报错。经过查询,是系统差异导致,所以为了方便,在windows下获取当前路径后拼接再生成绝对路径......