首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python3中删除HTML标签

如何在Python3中删除HTML标签
EN

Stack Overflow用户
提问于 2019-06-24 08:16:04
回答 2查看 324关注 0票数 -2

我正在写一个简单的脚本打印出我的IP地址在终端。我在从print语句中删除HTML标记时遇到问题。

我尝试使用urllib库中的.strip()函数。我对正则表达式的理解不够,无法输入到这段代码中。

代码语言:javascript
复制
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>Current IP Check< /title>< /head>< body>Current IP Address: XXX.XX.XX.XXX< /body>< /html>“

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-24 09:26:46

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
print(re.sub('<[^<]+?>', '', '<html>foo</html>'))

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

代码语言:javascript
复制
from bs4 import BeautifulSoup
print(BeautifulSoup('<html>foo</html>').get_text())
票数 0
EN

Stack Overflow用户

发布于 2019-06-24 09:07:27

您要做的并不是一个困难的字符串操作问题,但有一种更简洁的方法可以使用不同的服务来完成它。一个是ipify.org

代码语言:javascript
复制
import json
from urllib import request

with request.urlopen('https://api.ipify.org?format=json') as response:
    print(json.loads(response.read())['ip'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56728598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档