[英]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.