Selenium download full html page
我正在学习使用Python硒和美丽的汤刮网。目前,我正在努力搜集关于谷歌搜索趋势的热门搜索http://www.google.com/trends/hotrends pn=p5
这是我当前的代码。但是,我意识到完整的HTML没有被下载,我只有最近几天的内容。我能做些什么来纠正这个问题?
1 2 3 4 5 6 7 8 9 10 11 | from selenium import webdriver from bs4 import BeautifulSoup googleURL ="http://www.google.com/trends/hottrends#pn=p5" browser = webdriver.Firefox() browser.get(googleURL) content = browser.page_source soup = BeautifulSoup(content) print soup |
用户通过单击页面底部的
为了获得您想要的内容,您可以使用Selenium单击
例如,如果您希望在2013年2月15日星期五之前获取所有内容(对于每个日期,对于已加载的内容,似乎都存在此格式的字符串),则您的Python可能如下所示:
1 2 3 4 5 6 7 8 | content = browser.page_source desired_content_is_loaded = false; while (desired_content_is_loaded == false): if not"Friday, February 15, 2013" in content: sel.run_script("control.moreData();") content = browser.page_source else: desired_content_is_loaded = true; |
编辑:
如果在浏览器中禁用javascript并重新加载页面,您将看到根本没有"趋势"内容。这告诉我,这些项目是动态加载的。也就是说,它们不是打开页面时下载的HTML文档的一部分。selenium的.get()等待加载HTML文档,但不是等待所有JS完成。不知道AsyncJS是否会在任何其他事件之前或之后完成。它在准备好的时候就完成了,每次都可能不同。这就解释了为什么当您调用
因此,在打开页面之后,您可以尝试在获取源代码之前等待几秒钟——让加载内容的JS有时间完成。
1 2 3 | browser.get(googleURL) time.sleep(3) content = browser.page_source |