我搜索了几个解决方案,但它没有用。 那是我的代码
driver = webdriver.PhantomJS()
driver.get('https://baijia.baidu.com')
wait = WebDriverWait(driver,10)
wait.until(EC.element_to_be_clickable((By.ID, 'getMoreArticles'))).click()
content = driver.page_source
page = open('test.html','wb')
page.write(content)
我尝试调试代码,它成功返回点击的页面。 当我运行代码时,它也会成功返回,但它不会返回被点击的页面,只返回源页面。
我尝试搜索解决方案,将页面缩小到底部:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)",element)
但结果相同,只能成功调试。
由于
答案 0 :(得分:0)
在访问页面源之前等待一小段时间等待页面加载
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
driver = webdriver.Firefox()
driver.get('https://baijia.baidu.com')
wait = WebDriverWait(driver,10)
wait.until(EC.element_to_be_clickable((By.ID, 'getMoreArticles'))).click()
time.sleep(4)
content = driver.page_source
page = open('test3.html','w')
page.write(content)
答案 1 :(得分:0)
看来,您的按钮会启动AJAX请求。驱动程序没有等待它完成,因为没有页面重新加载。所以你应该添加明确的等待。这样的事情:
expected_number_of_articles = 10 # enter your number
article_locator = (By.CSS_SELECTOR, 'div#article') # enter your locator
wait.until(lambda driver: len(driver.find_elements(*article_locator)) >= expected_number_of_articles)