本报告详细介绍了如何使用Python的Selenium库进行自动化网页操作,目的是从特定网站抓取数据并保存至CSV文件。通过此示例代码,我们演示了从一个环保信息平台获取城市低碳发展指标数据的过程。
- Selenium: 一个用于自动化web应用测试的工具,可以直接运行在浏览器中,如同真实用户操作一样。
- WebDriver: Selenium的核心部分,用于控制浏览器的自动化操作。
- ChromeDriver: Chrome浏览器的WebDriver,需与浏览器版本相匹配。
本次自动化脚本的目标是爬取中国各城市在特定年份(2010至2020年)的低碳发展指标。这些指标可能包括但不限于人均碳排放、单位GDP碳排放等,这些数据对于研究和分析中国城市的可持续发展和低碳政策的效果至关重要。我们希望通过自动化技术高效地收集这些数据,以便于环境科学家、政策制定者和公众可以更好地理解和跟踪城市环境质量的变化趋势。
pythonCopy code
chromedriver_path = 'C:/Program Files/Google/Chrome/Application/chromedriver'
pythonCopy codefrom selenium import webdriver
driver = webdriver.Chrome(chromedriver_path)
为规避一些网站对自动化操作的检测,我们通过修改navigator.webdriver
属性为undefined
。
pythonCopy code
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
pythonCopy code
driver.get('https://www.ipe.org.cn/MapLowCarbon/LowCarbon.html?q=5')
- 打开输出文件:使用
csv
模块创建并打开输出文件output.csv
。 - 遍历年份:通过操作下拉菜单选择年份,范围从2010到2020年。
- 数据抓取与保存:抓取页面上显示的数据并保存至
output.csv
文件。 - 翻页处理:自动化翻页并抓取所有页面的数据。
- 异常处理:处理可能发生的异常,如元素未找到、点击被拦截等。
完成所有操作后,确保关闭WebDriver释放资源。
pythonCopy code
driver.quit()
代码中包含对多种异常的处理,以确保程序的稳定运行:
- NoSuchElementException: 当指定的元素未在页面中找到时抛出。
- StaleElementReferenceException: 当页面已更新导致元素引用过时时抛出。
- ElementClickInterceptedException: 当尝试点击的元素被其他元素遮挡时抛出。
本报告通过一个具体的例子展示了如何使用Selenium进行复杂的网页自动化操作,包括数据抓取、文件操作、异常处理等。此方法可广泛应用于Web数据采集、自动化测试等领域。