Selenium возвращает другой источник HTML, отличный от просмотра в браузере - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь использовать Selenium для загрузки следующей страницы с результатами, нажав кнопку Загрузить еще с этого сайта .Однако исходный код html-страницы, загруженной selenium, не показывает (загружает) реальные продукты, которые можно увидеть при просмотре.Вот мой код:

from selenium import webdriver      
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import os
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

#browser = webdriver.Firefox()#Chrome('./chromedriver.exe')
URL = "https://thekrazycouponlady.com/coupons-for/costco"
PATIENCE_TIME = 60
LOAD_MORE_BUTTON_XPATH = '//button[@class = "kcl-btn ng-scope"]/span' 
caps = DesiredCapabilities.PHANTOMJS
# driver = webdriver.Chrome(r'C:\Python3\selenium\webdriver\chromedriver_win32\chromedriver.exe')
caps["phantomjs.page.settings.userAgent"] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
driver = webdriver.PhantomJS(r'C:\Python3\selenium\webdriver\phantomjs-2.1.1-windows\bin\phantomjs.exe',service_log_path=os.path.devnull,desired_capabilities=caps)
driver.get(URL)

while True:
    try:
        time.sleep(20)
        html = driver.page_source.encode('utf-8')
        print(html)
        loadMoreButton = driver.find_element_by_xpath(LOAD_MORE_BUTTON_XPATH)


        loadMoreButton.click()

    except Exception as e:
        print (e)
        break
print ("Complete")

driver.quit()

Не уверен, могу ли я прикрепить образец файла HTML здесь для справки.В любом случае, в чем проблема и как мне загрузить точно такую ​​же страницу с селеном, как и через браузер?

1 Ответ

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

Это может быть связано с использованием PhantomJS, он больше не поддерживается и не рекомендуется для Selenium 3.8.1.Вместо этого используйте Chrome без головы.

options = Options()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)
...