2017-02-23 62 views
0

Я пишу сканер Python, используя библиотеку Selenium и браузер PhantomJs. Я открыл событие щелчка на странице, чтобы открыть новую страницу, а затем использовал метод browser.page_source, но вместо исходного источника страницы получаю исходный источник страницы. Интересно, как получить новый открытый источник страницы?Как получить новый открытый источник страницы?

Вот мой код:

import requests 
from selenium import webdriver 

url = 'https://sf.taobao.com/list/50025969__2__%D5%E3%BD%AD.htm?auction_start_seg=-1&page=150' 

browser = webdriver.PhantomJS(executable_path='C:\\ProgramData\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe') 
browser.get(url)  
browser.find_element_by_xpath("//*[@class='pai-item pai-status-done']").click()  
html = browser.page_source  
print(html)  
browser.quit() 

ответ

0

Вы должны перейти в новое окно первого

browser.find_element_by_xpath("//*[@class='pai-item pai-status-done']").click() 
browser.switch_to_window(browser.window_handles[-1]) 
html = browser.page_source 
0

Я считаю, что вам нужно добавить a wait прежде, чем получить исходный код страницы.

Я использовал implicit wait по коду ниже.

from selenium import webdriver 

url = 'https://sf.taobao.com/list/50025969__2__%D5%E3%BD%AD.htm?auction_start_seg=-1&page=150' 

browser = webdriver.PhantomJS(executable_path='C:\\ProgramData\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe') 

browser.get(url) 

browser.find_element_by_xpath("//*[@class='pai-item pai-status-done']").click() 

browser.implicitly_wait(5) 

html = browser.page_source 

browser.quit() 

лучше использовать explicit wait, но это требовало состояние как EC.element_to_be_clickable((By.ID, 'someid'))