如何删除 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),但我得到的却是以下内容

"当前IP查询当前IP地址:XXX.XX.XX.XXX/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())