如何使用循环从JSON中的多个URL解析内容-Python中的Selenium

问题描述 投票:0回答:2

我正在尝试将组织的HR系统中的数据解析为个人资料。我在Python中使用Selenium来完成这项工作,但遇到了一些困难。

我有网址列表,我想提取向其报告的人。伪数据显示如下(所有URL的结构相同):

[{'Name': 'Jon Doe','prop': {'ID': '5646'},'ManagerName': 'Kat'},
{'Name': 'Maokai','prop': {'ID': '48521'},'ManagerName': 'Malphite'},
{'Name': 'Ryze','prop': {'ID': '43547'},'ManagerName': 'Wukong'},
{'Name': 'Zed','prop': {'ID': '98244'},'ManagerName': 'Annie'}]

我尝试了下面的编码,但只能提取第十个URL的信息...输出列表未汇总。谁能告诉我代码有什么问题以及如何解决?

driver = webdriver.Chrome(executable_path=r'xxx\chromedriver.exe')

for url in URL_lst[:10]:
driver.get(url)
time.sleep(10)

data = json.loads(driver.find_element_by_tag_name('body').text)

NAME_lst = []
ID_lst = []
Manager_lst = []

for profile in data:
    NAME_lst.append(profile['Name'])
    ID_lst.append(profile['prop']['ID'])
    Manager_lst.append(profile['ManagerName'])

df_outputs = pd.DataFrame({'NAME':NAME_lst,
                           'ID':ID_lst,
                            'Manager':Manager_lst})

预期的输出将是10个URL的输出的总和。

出于安全原因,我无法发布网址。感谢您的理解。

json python-3.x loops selenium-webdriver append
2个回答
0
投票

看起来像缩进问题。检查一次驱动程序= webdriver.Chrome(executable_path = r'xxx \ chromedriver.exe')

for url in URL_lst[:10]:
    driver.get(url)
    time.sleep(10)

    data = json.loads(driver.find_element_by_tag_name('body').text)

    NAME_lst = []
    ID_lst = []
    Manager_lst = []

    for profile in data:
        NAME_lst.append(profile['Name'])
        ID_lst.append(profile['prop']['ID'])
        Manager_lst.append(profile['ManagerName'])

0
投票

确定。我自己找到了解决方案:

driver = webdriver.Chrome(executable_path=r'xxx\chromedriver.exe')
output=[]
for url in URL_lst[:10]:
    driver.get(url)
    time.sleep(10)
    data = json.loads(driver.find_element_by_tag_name('body').text)
    output.append(data)

然后,创建循环以添加信息。

© www.soinside.com 2019 - 2024. All rights reserved.