Selenium 爬取全国水质周报Word
很久没写爬虫了 ,昨天有个学姐说需要爬取水质的一些数据,给了个网站( http://xxfb.hydroinfo.gov.cn/ssIndex.html?type=2&tdsourcetag=s_pctim_aiomsg ),不过 那个网站 出问题了 ,无法加载数据,,,, .不过 爬虫的库都安装了 总不能 啥都不写 ,所以就从另一个网站爬取一些水质周报.
爬虫主要用的库 有:Selenium
一 安装Selenium
Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试。函数非常灵活,能够完成界面元素定位、窗口跳转、结果比较。爬虫过程,需要模拟鼠标点击,快速定位元素,利用 Selenium 可以非常方便的完成. 在控制台中输入 pip install selenium 进行安装.
二分析页面
爬虫最重要的一步是分析 页面内容. 本次爬虫网站为http://www.cnemc.cn/csszzb2093030.jhtml ,观察网站,主界面有一个ul,ul的id 为:contentPageData , 每个ul的li 都有a标签

点击a某个a标签后 ,打开新网页,网页中间就是我们需要下载的内容,单击页面的a标签就可以下载文件。

整个 操作非常少 。所以爬虫非常容易 。 主要步骤是:
1 进入主页面 http://www.cnemc.cn/csszzb2093030.jhtml,在输入框输入需要爬取的某一页。,点击跳转即到需要爬取的一页
2 获取该页面所有符合要求的a标签
3 根据a标签地址,进入下载页 ,找到需要下载文件的a 标签 最后实现点击就可以完成。
在之前 ,必须进行浏览器下载设置 。
options = webdriver.ChromeOptions()
# 设置中文
options.add_argument('lang=zh_CN.UTF-8')
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
prefs = {"download.default_directory": "地址"}
options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=options)
爬虫过程中 ,需要注意 ,在进行页面跳转后,需要让程序休息几秒,确保浏览器已经完成跳转。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "hlx"
# Date: 2018/10/12 from selenium import webdriver
import time
import os # 进入浏览器设置
options = webdriver.ChromeOptions()
# 设置中文
options.add_argument('lang=zh_CN.UTF-8')
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
prefs = {"download.default_directory": "D:\\MyProgram\\Python\\Pycharm\\Worm\\"}
options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=options)
my_Log=[] def download_Data(url_list):
'''
:param url_list:页面url列表
:return:文档下载url
''' for index in range(len(url_list)):
url = url_list[index]
driver.get(url)
#获取文件下载名称
try: filename= driver.find_element_by_xpath("//div[@class='text']//p//a").text
#点击文件下载链接
driver.find_element_by_xpath("//div[@class='text']//p//a").click()
#等待下载完成
print("正在下载"+filename)
time.sleep(3)
my_Log.append(filename+"下载完成") except:
print("下载第"+str(index+1)+"失败")
my_Log.append(url + "下载失败") #文件下载位置
#="D:\\MyProgram\\Python\\Pycharm\\Worm\\"+filename
#flag=True
#count=10 def WaterQuality_Spider(url,pageCount):
'''
:param url: 网站url
:param pageCount: 爬取的数目
:return: list url
''' list_url=[]
for index in range(pageCount):
driver.get('http://www.cnemc.cn/csszzb2093030.jhtml')
#休息一下 不然跳转不来
time.sleep(3)
page=str(index)
driver.find_element_by_id("pageNum").send_keys(page)#在页码处填写页码
#name=driver.find_element_by_xpath("//span[@class='list_hand'][last()]")
driver.find_element_by_xpath("//span[@class='list_hand'][last()]").click()#转到该页
# 休息一下 不然跳转不来
time.sleep(2)
list_a=driver.find_elements_by_xpath("//ul[@id='contentPageData']//a")#获取结果链接
for thea in list_a:
theurl = thea.get_attribute("href")
list_url.append(theurl)
download_Data(list_url)
list_url = []
my_Log.append("第"+str(index+1)+"下载完成")
f = open("log.txt", 'a')
for index in range(len(my_Log)):
f.write(my_Log[index] + "\n")
my_Log=[]
print("第"+str(index+1)+"下载完成") return "ok" if __name__=="__main__":
count=input("输入爬取的页数: ")
url='http://www.cnemc.cn/csszzb2093030.jhtml'
print("启动爬虫")
WaterQuality_Spider(url,int(count)) print("爬虫结束")
执行几分钟后,就可以获得结果

Selenium 爬取全国水质周报Word的更多相关文章
- python 利用selenium爬取百度文库的word文章
今天学习如何使用selenium库来爬取百度文库里面的收费的word文档 from selenium import webdriver from selenium.webdriver.common.k ...
- Python+Selenium爬取动态加载页面(1)
注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...
- Python+Selenium爬取动态加载页面(2)
注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- selenium爬取煎蛋网
selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriv ...
- 利用selenium爬取京东商品信息存放到mongodb
利用selenium爬取京东商城的商品信息思路: 1.首先进入京东的搜索页面,分析搜索页面信息可以得到路由结构 2.根据页面信息可以看到京东在搜索页面使用了懒加载,所以为了解决这个问题,使用递归.等待 ...
- python爬虫学习之爬取全国各省市县级城市邮政编码
实例需求:运用python语言在http://www.ip138.com/post/网站爬取全国各个省市县级城市的邮政编码,并且保存在excel文件中 实例环境:python3.7 requests库 ...
- 利用Selenium爬取淘宝商品信息
一. Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一 ...
- Scrapy 框架 使用 selenium 爬取动态加载内容
使用 selenium 爬取动态加载内容 开启中间件 DOWNLOADER_MIDDLEWARES = { 'wangyiPro.middlewares.WangyiproDownloaderMidd ...
随机推荐
- Vue -- 项目报错整理(1):RangeError: Maximum call stack size exceeded
这几天项目运行报了个错: Uncaught RangeError: Maximum call stack size exceeded,刚开始看到 "returnNodeParameter&q ...
- Android Fragment的用法(二)
如果你经常使用平板电脑,应该会发现很多的平板应用现在都采用的是双页模式(程序会在左侧的面板上显示一个包含子项的列表,在右侧的面板上显示内容),因为平板电脑的屏幕足够大,完全可以同时显示下两页的内容,但 ...
- 美团SQL优化工具SQLAdvisor
介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL逻 ...
- Go 在 TiDB 的实践
https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/79215751 更多TiDB链接: https://my.oschina.net/z ...
- Gmail 设置,时区
问题提出: 我们工作的时候,需要和不同时区的人进行合作.我们需要注意时区问题.如果没有设置好时区,会造成很多不便. 了解时区问题: 通过 这个网站可以,让你对时区有所了解:http://zh.thet ...
- PgSQL基础之 pgsql与mysql的简单区别
1.支持的booloan类型的值 mysql并不支持boolean类型,即便当我们创建了boolean的字段属性之后,mysql会自动将其转化为tinyint(1)类型.当插入“true”的时候,其值 ...
- Learn Algorithms With Javascript - 基于 Js 进行算法学习
基于 javascript 学习并实现常用的经典算法,欢迎对算法和数学感兴趣的 Js 开发者参与,一起学习共同进步. 算法实现 排序 插入排序 sort/lib/insertion-sort.js 希 ...
- 【Ansible 文档】【译文】入门教程
http://docs.ansible.com/ansible/latest/intro_getting_started.html Foreword 前言 到这里,你应该已经安装了Ansible,是时 ...
- [工具]StarUML
前些日子整理文档,需要补充程序结构流程图,一直没有想到怎么样能够清晰直观描述清楚现在的解决方法,直到我知道了 UML 语言.最早对于 UML 的了解也只是停留在一本书上,他们开发使用 UML 分解任务 ...
- 8.2Solr API使用(Facet查询)
转载请出自出处:http://eksliang.iteye.com/blog/2165882 一)概述 Facet是solr的高级搜索功能之一,可以给用户提供更友好的搜索体验.在搜索关键字的同时,能够 ...