首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python从string获得url (Regex)

Python从string获得url (Regex)
EN

Stack Overflow用户
提问于 2018-02-05 08:03:36
回答 1查看 82关注 0票数 2

因此,我要做的是从HTTP请求列表中提取所有urls。应该去掉协议、参数和路径末尾的斜杠(如果存在的话),例如:

代码语言:javascript
复制
10.4.180.222 [5/Feb/2018:08:03:40 +0100] "GET http://somewebsite.com/ HTTP/1.1" 200 1080
10.4.180.222 [5/Feb/2018:08:03:11 +0100] "GET http://www.somewebsite.cc/somesubdomain/ HTTP/1.1" 200 3056
10.4.180.222 [5/Feb/2018:08:03:11 +0100] "GET https://www.somewebsite.ua HTTP/1.1" 200 3056

应:

代码语言:javascript
复制
somewebsite.com
www.somewebsite.cc/somepath
www.somewebsite.ua

我尝试用两个步骤来完成这个任务,而不使用任何复杂的正则表达式(对于任何url都是通用的)

代码语言:javascript
复制
urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', file.read())

然后使用url解译。

代码语言:javascript
复制
domain = '{url.netloc}{url.path}'.format(url=urlparse(url))

几乎没问题。然而,我得到的路径以斜杠结尾。

代码语言:javascript
复制
www.somewebsite.cc/somepath/

所以我决定用regex。然而,我只知道一些基本的东西,所以我不能想出任何好的功能。现在我有这样的东西,但它不包括"/“和不同的协议:/

(谢谢你的建议:)

代码语言:javascript
复制
((?:www\.+)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-]*))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-05 08:25:13

如果最后的斜杠是你唯一的问题,这就是解决办法。

代码语言:javascript
复制
urls = [ x.rstrip('/') for x in re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', file.read()) ]

换句话说,就这么做

urls = x.rstrip('/')表示中的x< regex在这里>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48618063

复制
相关文章

相似问题

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