本Python脚本用于爬取和解析全国空气质量监测网的数据,帮助用户获取实时空气质量信息,便于研究与个人健康管理。
爬取空气质量检测网的部分城市的历年每天质量数据思路是从某城市的空气质量网页获取某市每月的链接,再爬取每个月的表格数据。
遇到的问题是通过requests无法直接获取到隐藏在页面中的表格数据,判断可能是由于这些数据是由动态加载完成的。
尝试解决的方法包括:
1. 试图通过XHR、js查找隐藏的数据加载网页但没有成功。
2. 使用phantomjs.get()和pd.read_html虽能偶尔获得所需的表格数据,但由于不稳定而无法大规模使用。
最终找到解决方案是利用selenium的webdriver.firefox(), 并执行driver.execute_script(return items) 来获取Console里的items中的表格数据。但是这种方法也遇到了一些问题:
1. 在爬取一个网页成功后连续进行时会出现两个错误:Message: ReferenceError: items is not defined 和 connection refused。
2. 对于connection refused的问题,可以通过关闭当前的driver.quit()来解决;对于execute_script 出错的情况,则可以尝试使用pd.read_html获取信息。
此外,在用phantomjs获取数据时常会输出空表格。这可能是由于加载时间不足导致的,因此需要等待到table元素出现后再进行网页抓取操作。
Element=wait.until(EC.element_to_be_clickable((By.XPATH,/html/body/div[3]/div[1]/div[1]/table/tbody)))
如果获取的数据为空,则重新执行获取数据的操作。当成功获取表格后,将其保存为.xls格式文件,并打印出成功的消息。
这段文字描述了爬取空气质量检测网的历史数据过程中遇到的技术挑战和解决方案,强调了动态加载内容的处理、使用selenium进行网页操作的重要性以及如何解决连续抓取时出现的问题。