1.开发环境:

python 3.5   + fiddler 4 (抓包工具)+ 火狐浏览器 + idea

2.分析要爬取的页面

2.1  首页  数据中心  点击 全国城市空气质量小时报   查看 fiddler4

表格中的内容就是要抓取的对象

分析fiddler 4 看出请求的方式 请求参数 以及 返回的响应对象

注意:一定要抓 返回带有 上述表格 的url (直接请求的url  不含该表格 可以通过浏览器F12查看开发者模式分析)如图:

2.2 发出请求抓取数据 并将每个分页html保存至当前文件夹下 data目录

# code = utf-8
#####
#   在url界面发出post请求
#   构造data数据和请求数据 参照 火狐浏览器F12
#####
import requests
from urllib import parse
import timedef gethtml(pagenum=1, inpageno=0):ISOTIMEFORMAT='%Y-%m-%d+%H'localtime = time.strftime(ISOTIMEFORMAT,time.localtime())str_time1 = time.strftime(ISOTIMEFORMAT,time.localtime()).split("+")#请求里面的时间不能为当前时间 加以调整str_time = str_time1[0] + " " + str(int(str_time1[1])-2) + ":00:00"url = 'http://datacenter.mep.gov.cn/websjzx/report!list.vm?xmlname=1512382906122&roleType=CFCD2084&permission=null'#data 和 headers 中可能有些值 没有什么用 但一并带上 防止出错# 注意:只带一些有用的值 是过不去的data = {'pageNum': str(pagenum),'orderby': "",'ordertype': "",'gisDataJson': '','inPageNo': str(inpageno),'xmlname': '1512382906122','queryflag': 'open','isdesignpatterns': 'false','roleType': 'CFCD2084','permission': '0','AREA': '','V_DATE': str(str_time),'E_DATE': str(str_time),}headers = {"Host": "datacenter.mep.gov.cn","Connection": "keep-alive","Content-Length": "232","Cache-Control": "max-age=0","Origin": "http://datacenter.mep.gov.cn","Upgrade-Insecure-Requests": "1","Content-Type": "application/x-www-form-urlencoded","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Referer": "http://datacenter.mep.gov.cn/websjzx/report!list.vm?xmlname=1512382906122&roleType=CFCD2084&permission=null","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh;q=0.9","Cookie": "JSESSIONID=219DD46A89EA84B3589339FAC6820E2E",}#将 data 包装成 bytesqs = parse.urlencode(data).encode("utf-8")response = requests.post(url, headers=headers, data=qs)html = response.content.decode("utf-8")#将爬下来的网站保存#以utf-8 创建文件 不然会报错with open("./data/data"+localtime+"_"+str(pagenum)+".txt", 'w', encoding="utf-8") as f:f.write(html)f.close()if pagenum < 37:pagenum += 1inpageno += 1gethtml(pagenum, inpageno)else:returnif __name__ == '__main__':gethtml()

2.3 利用正则表达式 分析页面 得到想要的数据

# code = utf-8
import os, redef getdata(filename):data = []datalists = []with open(filename, 'r', encoding='utf-8') as f1:txt = f1.read()f1.close()res_tr = r'<tr  style=\"\">(.*)?</tr>'m_tr = re.findall(res_tr, txt, re.S | re.M)for line in m_tr:###匹配表格标题res_th = r'<th title=(.*?)>(.*?)</th title=(.*?)>'m_th = re.findall(res_th, line, re.S | re.M)#print(m_th)#print(len(m_th))for mm in m_th:data.append(mm[2].strip("\" \""))datalists.append(data)data=[]###匹配表格内容res_td = r'<td title=(.*?)>(.*?)</td title=(.*?)>'m_td = re.findall(res_td, line, re.S | re.M)##print(len(m_td))for nn in m_td:data.append(nn[2].strip("\"\" \"\""))if(len(data) == 6):datalists.append(data)#print(data)data = []return datalists[6:]if __name__ == '__main__':files = os.listdir('./data')for filename in files:datalists = getdata('./data/'+filename)import csvcsvfile = open("data_8_7.csv", "a+",encoding='utf-8')try:writer = csv.writer(csvfile)for datalist in datalists:writer.writerow(datalist)except IOError as e:print(e)finally:csvfile.close()

Python爬取国家数据中心环境数据(全国城市空气质量小时报)并导入csv文件相关推荐

  1. 利用Python爬取国家水稻数据中心的品种数据

    利用Python爬取国家水稻数据中心的品种数据 一.页面获取 python可以进行对网页的访问,主要用到requests,beautifulsoup4包. 首先新建一个page的py文件,用来获取页面 ...

  2. python如何爬取实时人流量_使用python爬取微信宜出行人流量数据

    代码地址:https://liujiao111.github.io/2019/06/18/easygo/ 工具介绍: 该工具基于微信中的宜出行提供的数据接口进行爬取,能够爬取一定范围内的当前时间点的人 ...

  3. 使用python爬取BOSS直聘岗位数据并做可视化(Boss直聘对网页做了一些修改,现在的代码已经不能用了)

    使用python爬取BOSS直聘岗位数据并做可视化 结果展示 首页 岗位信息 岗位详情 薪资表 学历需求 公司排名 岗位关键词 福利关键词 代码展示 爬虫代码 一.导入库 二.爬取数据 1.爬取数据代 ...

  4. python爬取火车票网的时刻表数据

    python爬取火车票网的时刻表数据 导包 import re,requests,datetime,time,json from prettytable import PrettyTable from ...

  5. 练习:使用Python爬取COVID-19疫情国内当日数据

    练习:使用Python爬取COVID-19疫情国内当日数据 推荐公众号:数据酷客 (里面有超详细的教程) 代码来源数据酷客公众号教程 URL它是Uniform Resource Locator的缩写, ...

  6. python爬取股票信息_利用Python爬取网易上证所有股票数据(代码

    利用Python爬取网易上证所有股票数据(代码 发布时间:2018-04-14 17:30, 浏览次数:1261 , 标签: Python import urllib.request import r ...

  7. 如何使用python编程抢京东优惠券 知乎_学好Python爬取京东知乎价值数据

    原标题:学好Python爬取京东知乎价值数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这 ...

  8. 通过爬取天猫商品评论实例分析Python爬取ajax动态生成的数据

    本文主要通过爬取天猫商品kindle的评论为例来说明利用python爬取ajax动态生成的数据的方式,本文使用的工具如下: 工具 chrome浏览器[寻找评论的动态链接] python3.5[执行代码 ...

  9. python 爬取自如租房的租房数据,使用图像识别获取价格信息

    python 爬取自如租房的租房数据 完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/ziru #!/usr/bin/py ...

最新文章

  1. 使用AutoCAD 2021创建真实世界的土木设计项目
  2. spoon kettle连接数据库失败解决方法
  3. FACEBOOK’S CALIBRA
  4. 犀牛导出su文件错误插件错误_安利|一款免费插件blender-for-unrealengine
  5. Java服务器上显示图片问题_java,_服务器读取图片到jsp显示问题,java - phpStudy
  6. STL库的内存配置器(allocator)
  7. 一次cpu占用高的定位分析
  8. 小财靠勤,中财靠德,大财靠命,现在多少钱才是小财?
  9. Oracle基础篇--01数据库控制语言DCL
  10. Python语法学习第三天--元组
  11. 设计模式-第三篇之工厂方法和抽象工厂
  12. Operation not applicable
  13. 从全班同学的成绩中找出最高成绩(遍历一位数组)
  14. mysql查询自然周_Hive和MySQL中自然周保持一致的方法
  15. 软件测试-------三角形逻辑覆盖
  16. [Angular]——快速创建框架模板
  17. 提升深度学习模型的表现,你需要这20个技巧
  18. 区块链如何解决数据安全问题?
  19. Python 字典(Dictionary. items()方法
  20. linux zfs raid,Linux中的ZFS RAID和LUKS加密

热门文章

  1. SAS V8版本 运行后总是提示ERROR: Permanent copy of file WORK._tf0008.ITEMSTOR was deleted. 请问该怎么解决
  2. python 线程终止后再启动
  3. 服务器集群及其优缺点!
  4. URLencode转换
  5. 使用数据库进行用户身份认证
  6. [LINUX]手动清理syslog
  7. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[3]BTC的具体实现
  8. 被陆奇文章刷屏了,细思极恐
  9. Qemu-guest-agent(QGA)原理介绍及接口扩展
  10. html侧边导航栏跟随页面滚动,javascript练习:导航随内容滚动而跟随变化