Как правильно очистить JavaScript-сайт? - PullRequest
0 голосов
/ 21 ноября 2018

Я тестирую приведенный ниже код.

from bs4 import BeautifulSoup
import requests
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
import time

browser = webdriver.Firefox(executable_path="C:/Utility/geckodriver.exe")
wd = webdriver.Firefox(executable_path="C:/Utility/geckodriver.exe", firefox_profile=profile)
url = "https://corp_intranet"
wd.get(url)

# set username
time.sleep(2)
username = wd.find_element_by_id("id_email")
username.send_keys("my_email@corp.com")

# set password
password = wd.find_element_by_id("id_password")
password.send_keys("my_password")


url=("https://corp_intranet")
r = requests.get(url)
content = r.content.decode('utf-8')
print(BeautifulSoup(content, 'html.parser'))

Это нормально входит в мою корпоративную интрасеть, но просто печатает очень основную информацию.Нажатие на F12 показывает мне, что большая часть данных на странице отображается с использованием JavaScript.Я провел небольшое исследование по этому вопросу и попытался найти способ на самом деле захватить то, что я вижу на экране, а не очень, очень разбавленную версию того, что я вижу.Есть ли какой-нибудь способ сделать большой дамп всех данных, отображаемых на странице?Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

вы открываете 2 браузера, удалите эту строку

browser = webdriver.Firefox(executable_path="C:/Utility/geckodriver.exe")

проблема в селене, вы вошли в систему, но не в requests, потому что он использует другой сеанс

.....
.....
# missing click button? add "\n" to submit or click the button
password.send_keys("my_password\n")

# wait max 10 seconds until "theID" visible in Logged In page
WebDriverWait(wd, 10).until(EC.presence_of_element_located((By.ID, "theID")))

content = wd.page_source
print(BeautifulSoup(content, 'html.parser'))
0 голосов
/ 21 ноября 2018

Вам нужно, чтобы Selenium ждал, пока веб-страница загрузит дополнительный контент, через явное или неявное ожидание.

Неявное ожидание позволяет вам выбрать определенное время ожидания перед извлечением.

Явное ожидание позволяет вам выбрать событие для ожидания, например, видимый или кликаемый конкретный элемент.

Этот ответ подробно описывает эту концепцию.

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