我有一个包含公司名称列的csv文件,我需要找到它的域名并将其存储在公司名称旁边的同一个csv文件中
目前使用的代码
import pandas as pd
import clearbit
import json
clearbit.key = 'your secret key'
df = pd.read_csv("/home/vipul/Desktop/new.csv", sep=',', encoding="utf-8")
saved_column = df['Company']
i=0
for data in saved_column:
n = saved_column[i]
i = i+1
domain = clearbit.NameToDomain.find(name=n)
print(domain)
l = json.loads(domain)
print(l['domain'])
此处的代码在json中提供域名徽标和名称,但如何仅使用域
但这会产生错误
l = json.loads(domain)
print(l['domain'])
的错误:
TypeError: the JSON object must be str, not 'NameToDomain'
csv文件看起来像这样
Company
Accenture
AND Digital
Accenture
Kite Consulting Group
Capgemini
预期产出
Company Domain
Accenture accenture.com
AND Digital and.digital
Accenture accenture.com
Kite Consulting Group None
Capgemini capgemini.com
json看起来像
Name: Company, dtype: object
{'name': 'Accenture', 'logo': 'https://logo.clearbit.com/accenture.com', 'domain': 'accenture.com'}
{'name': 'AND Digital', 'logo': 'https://logo.clearbit.com/and.digital', 'domain': 'and.digital'}
{'name': 'Accenture', 'logo': 'https://logo.clearbit.com/accenture.com', 'domain': 'accenture.com'}
None
{'name': 'Capgemini', 'logo': 'https://logo.clearbit.com/capgemini.com', 'domain': 'capgemini.com'}
答案 0 :(得分:1)
根据文档,clearbit.NameToDomain.find(name=n)
返回一个字典,因此您可以像访问任何其他python字典一样访问它的值。你不在乎它来自json,那是为你处理的。 (这个问题也与csv无关。)
另外两点:
答案 1 :(得分:0)
基于这个问题,有两件事:
data = clearbit.NameToDomain.find(name=n)
print(data) # Dictionary
print(data['domain']) # Domain value
使用apply
import pandas as pd
from urllib.parse import urlparse
def parse_url(x):
return 'unknown' if pd.isnull(x) else urlparse(x)[1]
df = pd.read_csv("./new.csv")
df['domain'] = df['Profile URL'].apply(parse_url)
df_new = df.loc[:, ['Company', 'domain']]
clearbit的解析器可以实现为(我没有尝试过这段代码,但它应该可以工作):
import clearbit
def parse_url(x):
return 'unknown' if pd.isnull(x)
data = clearbit.NameToDomain.find(name=x)
return data.get('domain', 'Default value')
此代码从提供的CSV中导入数据。您可以改为在parse_url方法中调用clearbit API并返回适当的值。
此解决方案适用于Python3。请将其作为起点,而不是复制粘贴解决方案。
答案 2 :(得分:0)
因为它是一个字典,我们可以为它分配一些默认值并存储在csv文件中,然后删除它完成工作:)
已修改的代码
import pandas as pd
import clearbit
import json
clearbit.key = 'your key'
df = pd.read_csv("/home/vipul/Desktop/new.csv", sep=',', encoding="utf-8")
saved_column = df['Company'].dropna()
i=0
res = []
for data in saved_column:
n = saved_column.get(i)
print(n)
i = i+1
data = clearbit.NameToDomain.find(name=n)
if data != None:
res.append(data['domain'])
else:
res.append('domain.com')
print(res)
df['Domain'] = res
df.to_csv("/home/vipul/Desktop/new.csv",index = False, skipinitialspace=False)
print("File saved to desktop as new.csv")