如何获得新的开放页面源?

时间:2017-02-23 03:49:23

标签: python selenium phantomjs web-crawler

我正在使用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()

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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'))

等条件