Не удается просмотреть полный исходный код страницы в Selenium

Когда я просматриваю исходный HTML-код после ручного перехода на сайт через Chrome, я вижу полный исходный код страницы, но при загрузке исходного кода через селен я не получаю полный исходный код страницы.

from bs4 import BeautifulSoup
from selenium import webdriver
import sys,time


driver = webdriver.Chrome(executable_path=r"C:\Python27\Scripts\chromedriver.exe")
driver.get('http://www.magicbricks.com/')


driver.find_element_by_id("buyTab").click()

time.sleep(5)
driver.find_element_by_id("keyword").send_keys("Navi Mumbai")

time.sleep(5)
driver.find_element_by_id("btnPropertySearch").click()

time.sleep(30)

content = driver.page_source.encode('utf-8').strip()

soup = BeautifulSoup(content,"lxml")

print soup.prettify()

person LearningPython    schedule 19.08.2016    source источник
comment
Можете ли вы добавить источник страницы, который вам не хватает, с помощью веб-драйвера?   -  person Grasshopper    schedule 19.08.2016
comment
Вы пытались поставить time.sleep(5) или какое-то другое произвольное время после строки driver.get('http://www.magicbricks.com/')? Возможно, страница просто не загружается достаточно быстро, чтобы искомый компонент был доступен.   -  person Michael Platt    schedule 19.08.2016
comment
Кроме того, я заметил, что на сайте есть всплывающее окно, которое появляется, когда вы начинаете его использовать. Из-за этого всплывающего окна мне пришлось дважды нажать кнопку btnPropertySearch. Я смог увидеть весь исходный код, хотя. Не могли бы вы подробнее рассказать о том, чего вы не видите?   -  person Michael Platt    schedule 20.08.2016


Ответы (2)


Веб-сайт, возможно, блокирует или ограничивает пользовательский агент для селена. Простой тест — изменить пользовательский агент и посмотреть, работает ли он. Дополнительная информация по этому вопросу:

Изменить агент пользователя для драйвера селена

Цитата:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument("user-agent=whatever you want")

driver = webdriver.Chrome(chrome_options=opts)
person Leroy Jenkins    schedule 19.08.2016

Попробуйте что-то вроде:

import time
time.sleep(5)
content = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")

вместо driver.page_source.

Динамические веб-страницы часто необходимо отображать с помощью JavaScript.

person ghchoi    schedule 23.08.2020