我正在使用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 :(得分: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'))