Python爬虫案例六:抓取某个地区某月份天气数据并保存到mysql数据库中

news/2024/9/18 7:50:15/ 标签: 数据库, python, 爬虫, mysql
测试链接:https://lishi.tianqi.com/guangzhou/202003.html

源码:

import requests, pymysql
from lxml import etree
class ThSpider(object):def __init__(self):# 初始化self.month_list = ['202101', '202102', '202103', '202104', '202105', '202106', '202107', '202108', '202109', '202110', '202111', '202112', '202201', '202202']# 链接数据库self.cz = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='root',db='基本操作',charset='utf8')# 创建游标self.kit = self.cz.cursor()# 创建数据库table_sql = \'''create table if not exists 天气数据 (日期 varchar (50),最高气温 varchar (50),最低气温 varchar (50),天气 varchar (50),风向 varchar (50));'''self.kit.execute(table_sql)def request_start_url(self):# 发送请求 + 得到响应for month in self.month_list:start_url = 'https://lishi.tianqi.com/shanghai/{}.html'.format(month)self.headers = {'Cookie': 'UserId=17209281674394559; Hm_lvt_7c50c7060f1f743bccf8c150a646e90a=1720928176; HMACCOUNT=66A8254591DC78E3; Hm_lpvt_7c50c7060f1f743bccf8c150a646e90a=1720941400','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'}response = requests.get(start_url, headers=self.headers).textself.parse_response(response)self.commit_close()  # 也可在此处调用提交函数  请求一个月份,解析一个月份,然后提交数据库def parse_response(self, response):# 解析响应 + 得到字段A = etree.HTML(response)li_list = A.xpath('//ul[@class="thrui"]/li')for li in li_list:# 日期rq = li.xpath('./div[1]/text()')[0]# 最高气温gw = li.xpath('./div[2]/text()')[0]# 最低气温dw = li.xpath('./div[3]/text()')[0]# 天气tq = li.xpath('./div[4]/text()')[0]# 风向fx = li.xpath('./div[5]/text()')[0]# print(rq, gw, dw, tq, fx)insert_sql = \'''insert into 天气数据 values ("{}", "{}", "{}", "{}", "{}")'''.format(rq, gw, dw, tq, fx)self.kit.execute(insert_sql)print('ok --{}'.format(rq))def commit_close(self):# 数据库的提交和关闭self.kit.close()self.cz.commit()self.cz.close()def main(self):self.request_start_url()# self.commit_close()if __name__ == '__main__':th = ThSpider()th.main()

运行效果:

 


http://www.ppmy.cn/news/1525544.html

相关文章

数据结构应用实例(六)——最短路径

Content: 一、题目描述二、算法思想三、代码实现四、小结 一、题目描述 实现求最短路径的两种算法:Dijsktra 算法和 Floyd 算法; 二、算法思想 Dijkstra算法 求一个点到图中其余节点的最短路径; 首先设置三个辅助数组:   (1) f…

【Android笔记】Android Studio打包 提示Invalid keystore format

前言 Android项目通过Android Studio生产签名文件进行打包。提示 com.android.ide.common.signing.KeytoolException: Failed to read key hocsdn from store "/Users/ho/TestProject/app/ho_developer.jks": Invalid keystore format 不合法的签名文件格式&#…

【Linux】ldd常见问题

ldd常见问题排查 ldd命令 背景: 今日链接到客户现场,发现客户环境异常,查看日志报出.so文件无法找到 思路: 怀疑so文件丢失或者权限异常。 可以使用ldd命令来查看问题 ldd /usr/bin/xxxxx会显示出相关的so文件,例: # ldd /usr/bin/lightdm-deepin-greeterlinux-v…

Navigation之使用Safe Args传递数据(二)

系列文章目录 Navigation的简单使用(一) 一、Safe Args传递数据 1.引入库 1.将 Safe Args 添加到您的项目,请在顶层 build.gradle 文件中包含以下 classpath: buildscript {repositories {google()}dependencies {def nav_version "…

C++设计模式——Iterator迭代器模式

一,迭代器模式的定义 迭代器模式是一种行为型设计模式,它使得遍历一个容器对象中的元素变得更加简单。 迭代器模式将遍历操作从容器对象(如集合、列表)中分离出来,它通过迭代器对象来遍历容器对象中的元素&#xff0…

基于SpringBoot的求职招聘管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的求职招聘管理系统…

Java 类和对象-小结(重要)

1.类和对象:类是一个模板,抽象的,对象是一个具体的实例。 2.方法:定义和调用 3.对象的引用: (1)除了八大基本类型之外,都是引用类型。 &#…

Ubuntu20-xrdp与Windows-mstsc远程桌面连接

ubuntu端 sudo adduser yu //输入密码和确认密码,后面一路回车,新建用户yu,确保用户没有被登录 sudo apt install xrdp //安装xrdp sudo systemctl status xrdp //查看xrdp服务状态 sudo adduser xrdp ssl-cert //将用户 xrdp 添加到 ss…

Hive和Hbase的区别

Hive 和 HBase 都是 Hadoop 生态系统中的重要组件,它们都能处理大规模数据,但各自有不同的适用场景和设计理念。以下是两者的主要区别: 1. 数据模型 Hive:Hive 类似于传统的关系型数据库 (RDBMS),以表格形式存储数据…

动态ip切换过快,会引起我的账号下次登录异常吗

在网络世界中,动态IP地址的使用为用户提供了灵活性和隐私保护。然而,频繁且快速地切换IP地址可能会引起一些安全问题,尤其是在涉及到账号登录时。本文将探讨动态IP切换过快是否会导致账号登录异常,以及如何平衡IP切换的速度与账号…

k8s--pod控制器--1

Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建 控制器创建的pod&#xf…

前端工程化2:从0到1的eslint插件开发教程

从0-1的eslint插件开发教程 开发eslint插件目的:根据项目需要,自定义满足项目特殊需要的校验规则是 参考eslint官方文档展开阐述 插件开发 自定义规则 单元测试 下面开始通过一个示例demo来介绍插件整个开发流程 代码中出现的方法及变量的详细解释与…

NoSQL之Redis配置与优化(2)

一、Redis高可用 Redis 高可用性 1. 持久化 目的:避免数据因进程退出等原因而丢失,通过将数据从内存保存到硬盘,实现数据备份。主要方式: RDB 持久化:将内存中的数据生成快照保存到磁盘。适合定期备份数据&#xff…

深入理解 Vue 3 中的易混淆概念:全面解析及最佳实践20240909

深入理解 Vue 3 中的易混淆概念:全面解析及最佳实践 引言 Vue 3 的发布为前端开发带来了全新的组合式 API,这一革新使得代码的可维护性和复用性大大提升。然而,随着这些新特性的引入,也带来了一些容易混淆的概念。无论你是初学者…

微积分复习笔记 Calculus Volume 1 - 1.5 Exponential and Logarithmic Functions

1.5 Exponential and Logarithmic Functions - Calculus Volume 1 | OpenStax

package.json中~1.0.0和^1.0.0有什么区别

~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.0 ~ 1.2.9 版本,但是不包括1.3.0,也就是1.2.x ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 注意 如果前面…

数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年8月刊

本文为大家整理了墨天轮数据社区2024年8月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的技术实操,从基础的安装配置到复杂的故障排查,再到性能优化的实用技巧及常用脚本等,分享给大…

并行计算范式的时空辩证

来读一篇早年(September 27, 2017)的文章:The network era requires new models, with interactions instead of algorithms. 这篇文章迟到了很久,我在十多年前提到过一个相关的时空辩证: CPU 在时间序顺序执行指令流,基于图灵机…

职业技能大赛背景下的移动互联网应用软件开发(Android)实训室建设方案

一、建设背景 随着科技的持续进步,移动设备已成为人们日常生活中不可或缺的一部分。据相关数据,移动互联网的使用率在近年来显著上升。在这样的背景下,移动互联技术不仅推动了科技的发展,也渗透到了智能家居、车联网、工业自动化…

blender云渲染来了,blender云渲染教程!

朋友们,成都渲染101农场blender云渲染上线了,继3DMAX/C4D/maya/UE5云渲染上线后,又上线了blender云渲染,今天,成都渲染101渲染农场用四步教会您blender云渲染! 第一步,云渲码6666注册个渲染101…