Python删除网站html标记不起作用
我试图删除(html标记)中的文本,并将结果写入一个新文件。例如,一行文本可以是:Python删除网站html标记不起作用,python,html,regex,html-parsing,Python,Html,Regex,Html Parsing,我试图删除(html标记)中的文本,并将结果写入一个新文件。例如,一行文本可以是: < asdf> Text <here>more text< /asdf > 文本更多文本 因此,程序将写入输出文件:“Text more Text”,不包括html标记内的文本 这是我迄今为止的尝试: import urllib.request data=urllib.request.urlopen("some website").read() text1=data.d
< asdf> Text <here>more text< /asdf >
文本更多文本
因此,程序将写入输出文件:“Text more Text”,不包括html标记内的文本
这是我迄今为止的尝试:
import urllib.request
data=urllib.request.urlopen("some website").read()
text1=data.decode("utf-8")
import re
def asd(text1):
x=re.compile("<>")
y=re.sub(x,"",text1)
file1=open("textfileoutput.txt","w")
file1.write(y)
return y
asd(text1)
导入urllib.request
data=urllib.request.urlopen(“某些网站”).read()
text1=数据解码(“utf-8”)
进口稀土
def asd(文本1):
x=重新编译(“”)
y=re.sub(x,“,text1)
file1=open(“textfileoutput.txt”、“w”)
文件1.写入(y)
返回y
asd(文本1)
它似乎没有写干净的版本,仍然有标签。谢谢您的帮助。只需将
re.compile(“”)替换为re.compile(r“”)
就足够了只需将re.compile(“”)替换为re.compile(r“”)
就足够了您的正则表达式将只匹配“”。我建议这样的解决方案。你是对的,用这个:x=re.compile(r“]+>”)程序替换一行就可以了。谢谢。如果标签中某处包含>怎么办?正如alecxe指出的,尝试用正则表达式解析HTML通常不是最好的。正则表达式将只匹配“”。我建议这样的解决方案。你是对的,用这个:x=re.compile(r“]+>”)程序替换一行就可以了。谢谢。如果标签中某处包含>怎么办?正如alecxe所指出的,尝试用正则表达式解析HTML通常不是最好的。如果标签中某处包含>怎么办?如果标签中某处包含>怎么办?对于一些关心性能的人来说,BeautifulSoup
非常慢,甚至使用lxml
作为解析器。如果您的html文本确实格式良好,并且您信任您的正则表达式,那么使用它是没有问题的。对于其他一些关心性能的人来说,BeautifulSoup
非常慢,甚至使用lxml
作为解析器。如果您的html文本确实格式良好,并且您信任您的正则表达式,那么使用它就没有问题。
x=re.compile("<>")
In [1]: from bs4 import BeautifulSoup
In [2]: html = "<asdf>Text more text</asdf>"
In [3]: soup = BeautifulSoup(html, "html.parser")
In [4]: soup.asdf.unwrap()
Out[4]: <asdf></asdf>
In [5]: print(soup)
Text more text