【问题标题】:How to get the new open page source?如何获取新的开放页面源?
【发布时间】:2017-02-23 03:49:23
【问题描述】:

我正在使用Selenium 库和PhantomJs 浏览器编写Python 爬虫。我在一个页面中触发了点击事件打开一个新页面,然后我使用了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()

【问题讨论】:

    标签: python selenium phantomjs web-crawler


    【解决方案1】:

    你需要先切换到新窗口

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

    【讨论】:

      【解决方案2】:

      我相信你需要在获取页面源之前添加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')) 这样的条件

      【讨论】:

        猜你喜欢
        • 2016-05-25
        • 2019-05-25
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-24
        相关资源
        最近更新 更多