检查网址是否与网站相关

时间:2018-04-16 22:03:34

标签: python regex pandas http url

我有来自各个网站的大型网址数据框。我想查看它相对于哪个网站。定义网站的特征是从其他信息中清除其根网址(例如,对于http://www.agpu.net/根网址将为agpu.net

所以主要目标是找到给定URL的根目录。例如,http://www.mordgpi.ru/应该是标记mordgpi.ru但不是gpi.ru。此外,这不应仅适用于根网页网址,例如https://www.mordgpi.ru/our-life/news/46/55116/

网址数据集如下:

url
---------------------
http://pnu.edu.ru/ru/
https://www.dvfu.ru/
http://donstu.ru/
http://www.elsu.ru/
http://ivgpu.com/
http://ivanovo.ac.ru/
http://www.isuct.ru/  

对于根源:

root
-------------
pnu.edu.ru/ru
dvfu.ru
donstu.ru
elsu.ru
ivgpu.com
ivanovo.ac.ru
isuct.ru

对于给定的网址,我尝试按照以下方式获取root权限,但这并不能很好地运行:

root = roots['root'].str.lower().apply(lambda x: x in url).to_frame()
root = root[root.root]

我可以用regexp或其他方式实现这一目标吗?感谢任何帮助

1 个答案:

答案 0 :(得分:2)

您可以在python 2.7中使用urlparse或在python 3+中使用urllib.urlparse

from urllib import parse
split = parse.urlsplit(url)
netloc = split.netloc
path = split.path
if netloc.startswith('www.'):
    netloc = netloc[4:]
print(netloc + path.rstrip('/'))

传递所有测试用例。

我使用urllib的原因是因为当你有很长的查询字符串和高级网址格式(包括端口等)时,正则表达式可能会很难看。我让urllib处理它,以便您可以轻松地抓取netlocpath