python - 检查 url 是否与网站相关

标签 python regex pandas http url

我有来自各个网站的 url 的大 DataFrame。我想检查它与哪个网站相关。定义网站的特征是它的根 url 从额外信息中清除(例如,对于 http://www.agpu.net/ 根 url 将是 agpu.net/p>

所以主要目标是找到给定 url 与哪个根相关。例如,http://www.mordgpi.ru/ 应该得到标签 mordgpi.ru 而不是 gpi.ru。这也不适用于根网页 url,例如 https://www.mordgpi.ru/our-life/news/46/55116/

url 的数据集如下所示:

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

对于给定的 url,我尝试按照以下方式获取 root,但这效果不佳:

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

我可以用正则表达式或其他方式实现吗?感谢任何帮助

最佳答案

为此,您可以在 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 的原因是当您有长查询字符串和高级 url 格式(包括端口等)时,正则表达式可能很难看。我让 urllib 处理它,以便您可以轻松获取 netlocpath

关于python - 检查 url 是否与网站相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49866905/

相关文章:

Python:创建带前缀的顺序列表的简便方法

java - Java 和 JS 中的 RegEx 行为不同?

ruby - 在 Ruby 中的字母和数字之间插入空格

javascript - 使用 javascript 验证地址字段

python - win32 Python - pythoncom 错误 - ImportError : No module named pywintypes

python - 使用它们时最优雅的python处理空/缺失/未初始化对象/属性的方法

python - (仍然)尝试 app.app_context() 时出现 RuntimeError : Working outside of request context.

python - 如何使用 Pandas 计算另一列中每个值在一列中的出现次数?

python - 如何填充 Pandas 索引 NaN 的

python - 在 Pandas DataFrame 的一列中查找并替换所有匹配但不区分大小写的字符串