[python爬虫]爬取天气网全国所有县市的天气数据
[python爬虫]爬取天气网全国所有县市的天气数据
- 访问URL
- 解析数据
- 保存数据
所要用到的库
import requests
from lxml import etree
import xlwt
访问URL
这里我们要用xpath来解析数据,所以我们返回的网页数据格式为html
没学过xpath的可以看看这篇博客,写的还是很详细的
xpath链接
https://blog.csdn.net/u013332124/article/details/80621638
def ask_url(url):# 伪装请求头 header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"}response = requests.get(url, headers=header)# 以html格式返回数据html = etree.HTML(response.text)return html
解析数据
所要爬取的数据有一下
先是爬取每个省份URL的尾部,然后一个个访问。
def get_data(url):html = ask_url(url)base_url = 'http://www.weather.com.cn'province_name = [] # 省份名字# province_url = [] # 省份的URLcity_name = [] # 城市名称weather = [] # 天气现象wind_direction = [] # 风向wind_power = [] # 风力max_temperature = [] # 最高温min_temperature = [] # 最低温data = [] # 数据汇总province_name_decode = html.xpath('//div[@class="lqcontentBoxheader"]//a[@target="_blank"]/text()')for i in range(len(province_name_decode)):# print(province_name_decode[i].encode('raw_unicode_escape').decode())province_name.append(province_name_decode[i].encode('raw_unicode_escape').decode())province_url = html.xpath('//div[@class="lqcontentBoxheader"]//a[@target="_blank"]/@href') # 省份的URL# print(province_url)for j in range(len(province_url)):# for j in range(0, 1):temp_url = base_url + province_url[j]province_html = ask_url(temp_url)# 城市名称city_name_decode = province_html.xpath('//div[@class="hanml"]/div[1]//td[contains(@width, "83") and contains(@height, "23")]/a[1]/text()')for n in range(len(city_name_decode)):# print(city_name_decode[n].encode('raw_unicode_escape').decode())city_name.append(city_name_decode[n].encode('raw_unicode_escape').decode())# 天气现象weather_decode = province_html.xpath('//div[@class="hanml"]/div[1]//div[@class="conMidtab3"]//td[@width="89"]/text()')for n in range(len(weather_decode)):# print(weather_decode[n].encode('raw_unicode_escape').decode())weather.append(weather_decode[n].encode('raw_unicode_escape').decode())# 风向和风力wind_direction_decode = province_html.xpath('//div[@class="hanml"]/div[1]//div[@class="conMidtab3"]//td[@width="162"]/span[1]/text()')for n in range(len(wind_direction_decode)):# print(wind_direction_decode[n].encode('raw_unicode_escape').decode())wind_direction.append(wind_direction_decode[n].encode('raw_unicode_escape').decode())wind_power_decode = province_html.xpath('//div[@class="hanml"]/div[1]//div[@class="conMidtab3"]//td[@width="162"]/span[@class="conMidtabright"]/text()')for n in range(len(wind_power_decode)):# print(wind_power_decode[n].encode('raw_unicode_escape').decode())wind_power.append(wind_power_decode[n].encode('raw_unicode_escape').decode())# 最高温max_temperature_decode = province_html.xpath('//div[@class="hanml"]/div[1]//div[@class="conMidtab3"]//td[@width="92"]/text()')for n in range(len(max_temperature_decode)):# print(max_temperature_decode[n])max_temperature.append(max_temperature_decode[n])# 最低温min_temperature_decode = province_html.xpath('//div[@class="hanml"]/div[1]//div[@class="conMidtab3"]//td[@width="86"]/text()')for n in range(len(min_temperature_decode)):# print(min_temperature_decode[n])min_temperature.append(min_temperature_decode[n])data.append(city_name)data.append(weather)data.append(wind_direction)data.append(wind_power)data.append(max_temperature)data.append(min_temperature)return data
保存数据
保存成excel文件
def save_data(data, save_path):"""保存数据:param data::return:"""# 创建workbook对象workbook = xlwt.Workbook(encoding='utf-8', style_compression=0)sheet = workbook.add_sheet('天气', cell_overwrite_ok=True) # 创建工作表col = ('城市名', '天气', '风向', '风力', '最高温', '最低温')for i in range(len(col)):sheet.write(0, i, col[i])print("正在下载第%d列数据" % (i + 1))for j in range(len(data[0])):sheet.write(j + 1, 0, data[0][j])for j in range(len(data[1])):sheet.write(j + 1, 1, data[1][j])for j in range(len(data[2])):sheet.write(j + 1, 2, data[2][j])for j in range(len(data[3])):sheet.write(j + 1, 3, data[3][j])for j in range(len(data[4])):sheet.write(j + 1, 4, data[4][j])for j in range(len(data[5])):sheet.write(j + 1, 5, data[5][j])workbook.save(save_path)
得到的结果截图
完整的代码稍后给链接
[python爬虫]爬取天气网全国所有县市的天气数据相关推荐
- 在当当买了python怎么下载源代码-python爬虫爬取当当网
[实例简介]python爬虫爬取当当网 [实例截图] [核心代码] ''' Function: 当当网图书爬虫 Author: Charles 微信公众号: Charles的皮卡丘 ''' impor ...
- python爬虫爬取当当网的商品信息
python爬虫爬取当当网的商品信息 一.环境搭建 二.简介 三.当当网网页分析 1.分析网页的url规律 2.解析网页html页面 书籍商品html页面解析 其他商品html页面解析 四.代码实现 ...
- python爬虫爬取知网
python爬虫爬取知网 话不多说,直接上代码! import requests import re import time import xlrd from xlrd import open_wor ...
- Python爬虫爬取东方财富网的股票信息
简单的Python爬虫应用 目标:爬取东方财富网的股票信息 1.先找到要爬取的网页 2.第二步开始爬取信息 2.1 通过requests获取网页信息 2.2再通过BeautifulSoup解析: 2. ...
- python爬虫爬取慕课网中的图片
我们简单地爬取慕课网中免费课程下的第一页的图片,如想爬取多页图片,可以添加for循环自行实现 python版本:3.6.5 爬取网址:http://www.imooc.com/course/list ...
- python爬虫爬取东方财富网股票走势+一些信息
一.目标 我们的目标是爬取东方财富网(https://www.eastmoney.com/)的股票信息 我的目标是爬取100张股票信息图片 经过实际测试我的爬取范围为000001-000110,000 ...
- [Python爬虫]爬取东方财富网公司公告需要注意的几个问题
在上一篇文章中,以爬取东方财富网公司公告为例,介绍了如何爬取利用ajax加载的网页,以及如何模拟翻页.但是,在实际应用的过程中,发现了一些问题.接下来就来一一分析解决. 问题一.公告数量过多,后面的公 ...
- python爬虫-爬取当当网书籍信息存到Excel中
文章目录 一.任务 二.分析 (一).单页面的信息分析 源代码分析 目标信息定位与分析 代码设计 (二).所有目标页面链接分析 目标链接分析 代码设计 三.注意要点 四.完整代码 五.参考 一.任务 ...
- python 爬虫 爬取当当网图书信息
初次系统的学习python,在学习完基本语法后,对爬虫进行学习,现在对当当网进行爬取,爬取了基本图书信息,包括图书名.作者等 import requests from time import slee ...
最新文章
- Ubuntu 14.04使用命令行安装VirtualBox
- 获取mysql可行方法_Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法...
- 第三次学JAVA再学不好就吃翔(part71)--BigDecimal类
- web mp4第一帧_Web成帧器就在这里!
- DCL并非单例模式专用
- Vue 进阶系列(一)之响应式原理及实现
- 自定义滚动条,可解决火狐滚动条默认样式修改不了问题
- 安装JDK 9与使用jshell
- 物化视图实践(1)----实现远程数据同步
- TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)
- 使用wwise音效引擎的好处
- 基于node.js和Vue的音乐管理系统 /音乐网站的设计与实现
- smartdeblur(图片模糊处理工具) v2.2
- 关于CMOS摄像头的DVP接口的工作方式与一般使用方法
- eyoucms目录结构
- 新能源汽车前景广袤但痛点多多,大圆柱电池能否提供最优解?
- 伽罗华域(Galois Field)上的四则运算
- onblur()无限触发问题
- Matlab中int2str函数使用
- 论文复现-1:bertscore