Как получить Javascript сгенерированный контент - PullRequest
2 голосов
/ 27 марта 2020

У меня сейчас проблема с получением HTML из javascript сгенерированного контента на этой (https://aca3.accela.com/MILARA/GeneralProperty/PropertyLookUp.aspx) веб-странице. Он генерирует javascript на самой странице. Мне было интересно, что я делаю не так. Код, который я использую, таков:

import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from bs4 import BeautifulSoup
driver = webdriver.Chrome(executable_path="/Users/MrPete/Downloads/chromedriver_win32/chromedriver")
driver.get('https://aca3.accela.com/MILARA/GeneralProperty/PropertyLookUp.aspx')

profession = Select(driver.find_element_by_xpath('//*[@id="ctl00_PlaceHolderMain_refLicenseeSearchForm_ddlLicenseType"]'))
profession.select_by_value("Pharmacist")
time.sleep(5) # Let the user actually see something!
lName = driver.find_element_by_xpath('//*[@id="ctl00_PlaceHolderMain_refLicenseeSearchForm_txtLastName"]')
lName.send_keys('roy')
search = driver.find_element_by_xpath('//*[@id="ctl00_PlaceHolderMain_btnNewSearch"]')
search.click()
time.sleep(5)
html = driver.execute_script("return document.getElementsByTagName('table')[38].innerHTML")
print(html)

Теперь я не получаю никакого вывода, вывод, который я получаю:

<tbody><tr>
                                        <td style="white-space:nowrap;"><span class="ACA_SmLabel ACA_SmLabel_FontSize"> Showing 1-13 of 13 </span></td>
                                </tr>
                        </tbody>

Что (вроде) название таблицы я пытаюсь получить. В качестве вывода я хочу получить HTML всей таблицы (разместил изображение таблицы, сгенерированное javascript. В настоящее время я получаю небольшой заголовок вверху рисунка, ' Показаны 1-13 из 13 ', и мне нужна вся таблица. enter image description here

1 Ответ

1 голос
/ 27 марта 2020

Попробуйте изменить

html = driver.execute_script("return document.getElementsByTagName('table')[38].innerHTML")
print(html)

На:

target = driver.find_element_by_xpath('//table[@class="ACA_GridView ACA_Grid_Caption"]')
print(target.text)

Вывод:

Showing 1-13 of 13
License Type
License Number
First Name
Middle Initial
Last Name
Organization Name
DBA/Trade Name
License Status
License Expiration Date
Pharmacist
5302017621
Arthur
James

et c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...