Как использовать циклы для анализа содержимого из нескольких URL-адресов в JSON - Selenium в Python - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь проанализировать данные в системе управления персоналом нашей организации для профилей людей. Я использую Selenium в Python для выполнения этой работы, но я сталкиваюсь с некоторыми трудностями.

У меня есть список URL-адресов, и я хочу извлечь людей, которые отчитываются перед ними. Фиктивные данные отображаются как показано ниже (то же самое для всех 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'}]

Я попробовал приведенную ниже кодировку, но могу извлечь информацию только для 10-го 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-адресов.

По соображениям безопасности я не могуопубликовать URL. Спасибо за понимание.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

OK. Я сам нашел решение:

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)

Затем создайте циклы для добавления информации.

0 голосов
/ 05 ноября 2019

Похоже на проблему с отступом. Отметьте это один раз: driver = webdriver.Chrome (executetable_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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...