driver.page_source返回一个空字符串

时间:2017-11-29 09:08:24

标签: python-3.x selenium selenium-webdriver web-scraping

我需要将整个html源保存到文件中,以便以后解析。

似乎我在这里遗漏了一些明显的东西,但代码应该获取页面源并将其保存到文本文件中。它只是创建一个空文件。如果我写一个静态字符串,它会被保存。所以我怀疑是因为,page_source空白了。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time 
# imported keys tp try Enter key simualtion.
driver = webdriver.Firefox()
#driver.set_window_size(2000, 1500)
driver.get("http://www.moneycontrol.com")
searchText = driver.find_element_by_id("search_str")
searchText.send_keys("dlf")
search_button = driver.find_element_by_css_selector(".btn_black.btn_search.FR")
search_button.click()
time.sleep(3)# i know this isn't the right way to wait. 
StrSource = driver.page_source
textfile = open('test1.txt', 'w')
textfile.write(StrSource)
textfile.close()

2 个答案:

答案 0 :(得分:0)

添加隐式等待,以允许驱动程序等待所有页面元素完全加载。

 driver = webdriver.Firefox()   
 driver.implicitly_wait(10)

如果不起作用,请为目标网页上的任何元素添加显式等待。 添加Assert以检查目标页面是否已完全加载。然后开始将页面源抓取到文本文件。

答案 1 :(得分:0)

我已经运行了你自己的脚本。控制流程非常好,直到我们上线:

textfile.write(StrSource)

尝试在test1.txt Selenium-Python 内撰写时,客户端显示的错误为:

    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 57354-57358: character maps to <undefined>

Selenium-Python 客户端v3.7.0存在一个已知问题,我们期待更快修复。