繁体   English   中英

如何在 Python3 中删除 HTML 标签

[英]How to remove HTML Tags in Python3

我正在编写一个简单的脚本来在终端中打印出我的 IP 地址。 我无法从打印语句中删除 HTML 标记。

我曾尝试使用 urllib 库中的 .strip() 函数。 我对正则表达式的了解不足以输入此代码。

import re
import urllib.request, urllib.parse, urllib.error
import json


data = urllib.request.urlopen('http://checkip.dyndns.org')
for line in data:
    print(line.decode().strip())

我希望输出仅是我的 IP (xxx.xx.xx.xxx) 但我得到以下信息

"<html><head><title>当前IP检查</title></head><body>当前IP地址:XXX.XX.XX.XXX</body></html>"

您尝试做的不是一个困难的字符串操作问题,而是使用不同的服务有一种更简洁的方法。 一个是ipify.org

import json
from urllib import request

with request.urlopen('https://api.ipify.org?format=json') as response:
    print(json.loads(response.read())['ip'])

如果您想使用正则表达式,而不是剥离标签,您可以使用括号匹配您感兴趣的部分,这是一个示例:

import re
import urllib.request


data = urllib.request.urlopen('http://checkip.dyndns.org').read().decode()
print(re.search(r'Current IP Address: ([\d\.]+)', data).group(1))

您可以在https://docs.python.org/2/library/re.html#match-objects找到更多信息和示例

要删除一般的 HTML 标签,您可以使用 re:

print(re.sub('<[^<]+?>', '', '<html>foo</html>'))

或者更容易使用 BeatufilSoup 而不是 re:

from bs4 import BeautifulSoup
print(BeautifulSoup('<html>foo</html>').get_text())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM