Как получить исходный код следующей страницы - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь конвертировать драйвер в html, чтобы использовать красивый суп.Проблема в том, что элемент, который печатается с помощью средства преттификации (он же в драйвере), является HTML-кодом страницы входа в систему, а не тем, который идет после (я точно знаю, что вход в систему успешен, а такжепереход к следующей странице).

Есть ли причина, по которой драйвер будет содержать исходный код первой страницы, а не обновляться до того, к которому мы перешли?

Это мой код:

import os
import random
import sys

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://www.instagram.com/gelsonfonteles/followers/'
driver = webdriver.Chrome()
driver.implicitly_wait(1)
driver.get(url)


username = driver.find_element_by_xpath('//*[@name="username"]')
password = driver.find_element_by_xpath('//*[@name="password"]')
login_btn = driver.find_element_by_xpath('//*[@class="_0mzm- sqdOP  L3NKy      "]')

username.send_keys("name")
password.send_keys("pass")

#login
login_btn.click()
driver.implicitly_wait(2)

soup = BeautifulSoup(driver.page_source,features="lxml")
print(soup.prettify())

driver.quit()

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Вы были довольно близко.Вам просто нужно вызвать WebDriverWait для видимости любого из элементов на странице и использовать features="html.parser" следующим образом:

0 голосов
/ 27 декабря 2018

driver.implicitly_wait(2) в этом случае бесполезен.Вам нужно использовать явное ожидание .Например,

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

login_btn.click()
WebDriverWait(driver, 10).until(EC.url_changes('https://www.instagram.com/accounts/login/?next=/gelsonfonteles/followers/')) #  pass exact URL of Login page
soup = BeautifulSoup(driver.page_source,features="lxml")

EC.url_changes позволяет ждать, пока указанный URL-адрес изменится на что-то другое.

Вы также можете подождать, пока какой-то конкретный элемент появится на нужной странице

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