仅从 pandas 列的超链接中提取标题

Extract only title from hyperlink in pandas column

我有包含超链接的 pandas 列,我只想提取域名,不包括“.com”、“http//”、“www.”

下面的代码适用于我的大多数情况,但有一个代码没有 return 所需的字符串:

docs['link_title'] = docs['hyperlink'].str.extract(r'(?<=\.)(.*?)(?=\.)')

以下是超链接和结果的示例:

http://www.traveldailymedia.com/240881/qantas-launches-uk-agent-incentive/
-> “traveldailymedia”

https://www.instagram.com/p/BKDJcO-htRs/ -> “instagram”

但这是一个我没有得到域名的例子:

http://dtinews.vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes.html
-> “vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes”

因为没有前导点 ("."),所以不会得到名称 "dtinews"。

我将不胜感激这里的正则表达式或我的方法的一些替代方法。

您可以使用 tldextract:

import tldextract
import pandas as pd
docs = pd.DataFrame({'hyperlink':["http://www.traveldailymedia.com/240881/qantas-launches-uk-agent-incentive/","https://www.instagram.com/p/BKDJcO-htRs/","http://dtinews.vn/en/news/018/46981/vietnam-to-buy-40-airbus-planes.html"]})
docs['link_title'] = docs['hyperlink'].apply(lambda x: tldextract.extract(x).domain)

输出:

>>> docs['link_title']
0    traveldailymedia
1           instagram
2             dtinews