Python爬虫抓取气象_bs4+定时器+mysql+对象_一蓑烟雨任平生

Scrapy如何实现定时任务爬虫 Scrapy是基于Python开发的爬虫框架,可以通过Python的定时任务工具——APScheduler实现定时任务。scrapy是一种常用的爬虫框架,其提供了强大的功能和高效的处理能力。func参数指定要执行的爬虫任务,例如上面的示例中,将爬虫名称替换成自己的爬虫名称即可。在编写好爬虫文件后,按照Scrapy定时任务的实现步骤,在settings.py中配置任务和定时任务脚本即可。在以上代码中,我们引入了Scrapy定时任务的调度器,并在执行爬虫任务前启动调度器,执行完毕后关闭调度器。 阅读详情


前言

麻雀虽小 五脏俱全 这篇爬虫文章涉及的技术不少

bs4抓取数据 (之前一直用xpath感觉一种东西吃多了会腻)
定时器(一次执行终身执行 懒人必备)
mysql(数据库 存数据的地方)
对象(面向对象编程)


说啥呢?直接扔代码吧

看不懂的话你细品 留言也可以 进群也可以

# -*- coding: utf-8 -*-
"""
# @Time : 2021/4/6 10:10 

# @Author : 一蓑烟雨任平生

# @File : 天气.py 

# @Software: PyCharm
"""
import datetime
import threading
from datetime import date

import pymysql
import requests
from bs4 import BeautifulSoup

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456', db='feifei', charset='utf8')
cur = conn.cursor()
print("数据库已连接")


class ZhangZhang:
    def __init__(self):
        self.head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0'}
        self.babaUrl = 'http://www.agri.cn/qxny/nqyw'

    def getTime(self):
        # 获取现在时间
        now_time = datetime.datetime.now()
        # 获取明天时间
        next_time = now_time + datetime.timedelta(days=+1)
        next_year = next_time.date().year
        next_month = next_time.date().month
        next_day = next_time.date().day
        # 获取明天3点时间
        next_time = datetime.datetime.strptime(
            str(next_year) + "-" + str(next_month) + "-" + str(next_day) + " 03:00:00",
            "%Y-%m-%d %H:%M:%S")
        timer_start_time = (next_time - now_time).total_seconds()
        print(timer_start_time)
        return timer_start_time;

    def get_all_url(self):
        ee = []
        page_one = self.bs_Url('http://www.agri.cn/qxny/nqyw/index.htm')
        bb = [page_one.find('td', class_='bk_7').find_all("table")[i] for i in range(1, 8, 2)]
        time4 = date.today() - datetime.timedelta(days=4)
        for i in bb:
            cc = i.find("td", class_='hui_14').text[1:-1]
            if str(time4) == cc:
                dd = i.find('a', class_='link03')['href'][1:]
                ee.append(dd)
        ff = [self.babaUrl + fp for fp in ee]
        return ff

    def get_info(self, list):
        for i in list:
            pic = i.split('/t')[0] + '/'
            shuju = self.bs_Url(i)
            title = shuju.find('td', class_='hui_15_cu').text
            publish_time = shuju.find('td', class_='hui_12-12').text.split(":")[1][:10]
            source = shuju.find('td', class_='hui_12-12').text.split(":")[3]
            content = str(shuju.find('div', class_='TRS_Editor'))
            content = content.replace("./", pic)
            sql = "insert into weather_info(title,publish_time,source,content) VALUES (%s,%s,%s,%s)"
            cur.execute(sql, (title, publish_time, source, content))
        conn.commit()
        cur.close()
        conn.close()

    def bs_Url(self, wangzhi):
        yy = requests.get(wangzhi, self.head).content
        page_info = BeautifulSoup(yy, "html.parser")
        return page_info

    def run(self):
        conn.ping(reconnect=True)
        print("------爬虫程序开始------")
        # 获取今日Url然后详情
        self.get_info(self.get_all_url());
        # 获取信息
        timer_start_time = self.getTime();
        timer = threading.Timer(timer_start_time, self.run)
        timer.start()


if __name__ == '__main__':
    ZhangZhang().run()


总结

问:楼主,你写代码命名怎么aa BB cc dd啊,好不规范啊

答:我的代码风格就是ABCDEFG,英语不好没时间搜百度,没给你搞成ZXCVBNM就已经很好了吧?

QQ群,对于刚学爬虫的小白可以来群里交流,我也是小白,只是在通往大佬的路上一直跌到,导致现在的鼻青脸肿,成了大胖子

在这里插入图片描述
在这里插入图片描述

爬虫进阶——Python如何实现定时爬虫 前言 工作中可能会突然有这样的一个需求,需要让爬虫任务定时去执行,定时获取数据信息。那要怎么做呢? 废话不多说,跟着小编直接进入主题。下面是针对定时爬虫将获取的数据自动存入mysql中,方法如下 1. 结合python的定时框架APScheduler 参考代码如下: from apscheduler.schedulers.background import BackgroundScheduler, BlockingScheduler import requests import random import 阅读详情

相关推荐

调用天气接口存入数据库---mysql

经过多方研究,总结出的简单明了的接口,通过调用接口获取天气预报,然后存入mysql数据库。研究有遗漏之后可以提出来,相互学习。

在Python爬虫中,如何实现定时任务?

在Python中实现定时任务,特别是在编写爬虫程序时,可以利用schedule库来简化任务的调度。schedule是一个轻量级的任务调度库,允许你以人类可读的格式安排任务,例如按照一定的时间间隔、特定的日期和时间执行任务。

2301_80354401的博客 1691

利用python3爬虫爬取全国天气数据并保存入Mysql数据库

利用python3爬虫爬取全国天气数据并保存入Mysql数据库 具体可见博客 https://blog.youkuaiyun.com/u013523775/article/details/79313803

定时器timer,设置自动爬虫可以用

#BlockingScheduler定时任务 from apscheduler.schedulers.blocking import BlockingScheduler from datetime import datetime 首先看看周一到周五定时执行任务 输出时间 def job(): print(datetime.now().strtime("%Y-%m-%d %H:%M:%S")) Bl...

zhubbjimanglai的博客 884

Halcon手眼标定实战:九点标定法从入门到精通(附完整代码)

本文详细介绍了Halcon环境下九点标定法的完整实现流程,从基础概念到实战技巧,帮助开发者快速掌握手眼标定技术。通过精确采集图像坐标与机械坐标,计算仿射变换矩阵,实现相机与机械臂坐标系的精确映射,适用于工业自动化中的平面定位场景。

v4w5x6的博客 410

VoLTE吞字断续优化方案

网络侧通过各节点探针的数据采集,能够进行RTP和RTCP包的分析,确定各节点的上行或下行丢包情况。1.基于测试语音分析,每2秒中大约8个字,每个字约10个RTP语音包。通话过程中,语音有短暂停顿,收音段听语音中会出现“吞字/断续现象”2.连续丢3~5个RTP以上就可能会出现吞字断续的感觉。下行评价的丢包问题,很难有效指导定界定位分析,无从下手。2.部分终端可能存在RTCP不反馈,导致无法获取丢包。1.语音包为UDP包,无反馈,终端无法判定是否丢包。终端可依据自身的调度反馈或弃包进行上行丢包判决。

m0_73503557的博客 1509

用Python3 + bs4 + request + mysql 抓取并存储新发地菜价数据

为了让大家去菜市场砍价的时候,心里更有底,我写了一个小程序,抓取新发地官网公布的农副产品价格,并存入数据库,仅供研究。 简单说一下思路吧: 从新发地官网找到数据展示的规律,发现不同的类别和页数,是通过两个接口参数控制的,因此将URL模板设计成动态的,带有两个动态参数。 例行获取页面的bs4实体,通过div标签和class属性,找到要获取的数据列表。 把数据过滤好,存入列表。第一行固定是标题,后面...

bigpopxuxin的博客 746

USB2.0学习1--基本概念

USB全称是 Universal Serial Bus,即通用串行总线,是一种计算机与外围设备进行数据交互的串行通信标准。USB协议是在1994年底由英特尔、IBM、Microsoft等公司联合提出的,现由USB协会(USB-IF)管理。USB使用差分信号来传输数据,具有传输速度快、支持热插拔、连接灵活、独立供电、协议向下兼容等优点,目前应用十分广泛。

原海青木的博客 3758

如何利用python实现实时采集数据?一篇文章教你轻松学会!

记得以前的Windows任务定时是可以正常使用的,今天试了下,发现不能正常使用了,任务计划总是挂起。接下来记录下Python爬虫定时任务的几种解决方法。 1.方法一、while True 首先最容易的是while true死循环挂起,不废话,直接上代码: 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及

Python_sn的博客 6642

数值计算之 插值法(4)切比雪夫零点插值

数值计算之 插值法(4)切比雪夫零点插值前言插值点选取第一类切比雪夫多项式拉格朗日插值多项式的余项切比雪夫零点插值后记 前言 上篇插值法讨论了多项式插值的解,以及龙格现象。本篇将介绍一种在抽取节点时有效降低龙格现象的方法——切比雪夫零点插值。 插值点选取 插值多项式阶数较高时,在取值空间均匀取点,容易出现龙格现象。 即区间边缘的插值结果与原函数差异很大,而区间中央的插值结果相对较好。这表明,高阶多项式插值对区间中央的节点拟合好,而对两端节点拟合效果差。 自然而然会想到,在两端多采样一些节点,在中间少采样一

qq_41035283的博客 1万+

相场断裂模型中的各向异性机制:从裂纹密度到驱动力的数值实现

断裂力学是研究材料在载荷作用下裂纹萌生与扩展规律的基础学科,其核心在于理解材料失效的能量准则与路径选择。传统方法通常预设裂纹路径,而相场断裂模型通过引入连续的相场变量,将裂纹模拟转化为一个能量最小化问题,能够自发预测裂纹的萌生、扩展与分叉,在工程失效分析中具有重要价值。当材料具有显著的方向依赖性时,如单晶、复合材料或轧制金属板,各向同性假设会失效,此时需引入各向异性机制。该机制的核心在于改造两个关键部分:一是裂纹密度函数,通过引入各向异性张量来定义不同方向上形成裂纹微结构的能量成本;二是临界能量释放率(断裂

weixin_31421613的博客 297

设置爬虫定时任务

一.导包<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId...

时间(实践)是检验真理的唯一标准 2115

全功能爬虫框架:Botasaurus 的详细使用(现代化、反检测、高并发的智能爬虫框架)

Botasaurus是一个基于 Python 的全栈式智能数据采集框架。它深度融合了以下关键技术: 无头浏览器自动化(Headless Browser Automation):基于 Playwright 或 Puppeteer,支持 Chromium、Firefox、WebKit; 高级反检测引擎(Anti-Detection Engine):自动绕过 WebDriver、Canvas、AudioContext 等 50+ 种指纹检测; 声明式任务模型(Declarative Task Model):用装

数据知道的博客 4369

python连接远程服务器mysql并写入数据

方式一: 在已有数据库中创建表 python代码 #!/usr/bin/python #指明编码 # -*- coding: UTF-8 -*- #导入python库 import re import pymysql import json #定义数据库类 class class_database: #连接数据库 mysql def connectDB(self): #此处添加charset='utf8'是为了在数据库中显示中文,此编码必须与数据库的

dong123ohyes的专栏 1671

PyTorch深度学习实战(3)——使用PyTorch构建神经网络

PyTorch 是一个用于构建深度神经网络的库,具有灵活性和可扩展性,可以轻松自定义模型。在本节中,我们将使用 PyTorch 库构建神经网络,利用张量对象操作和梯度值计算更新网络权重,并利用 Sequential 类简化网络构建过程,最后还介绍了如何使用 save、load 方法保存和加载模型,以节省模型训练时间。

盼小辉丶的博客 8万+

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1551

爬虫 定时任务

爬虫 定时任务 环境 python3.6 爬虫文件 问题1: 输出汉字会报错 # 首行加这段代码 sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) 问题2: 读取json文件 with open("/root/work/vivo/static/all", "rb") as f: b = json.loads(...

非布司他 830

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

cron定时器_爬虫_获取每日星座运势

applicationContext_service.xml xmlversion="1.0"encoding="UTF-8"?> beansxmlns="http://www.springframework.org/schema/beans"    xmlns:context="http://www.springframework.org/schema/context"xmlns:

llllvvv的博客 905

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

爬虫定时任务crontab

1. crontab的安装和介绍2. crontab在爬虫中的使用2.1 使用流程把爬虫启动命令写入sh文件给sh脚本添加可执行权限把sh添加到crontab脚本正2.2 myspier.sh例子先把要执行的命令写入脚本cd `dirname $0` || exit 1 python ./main.py >> run.log 2>&1 其中>>表示重定向,把p...

学海无涯 1103

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python爬虫定时任务

方法一: time模块中的sleep()方法 Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。 语法:time.sleep(t) 实例: 结果: 方法二:datetime模块中的timedelta()方法 实例:minutes可以换成hours\days 结果: 方法三:apscheduler模块中的Ba...

codingforhaifeng的博客 1826

网络爬虫-定时收集AQI日报的空气质量信息并存入MySQL数据库中

标题网络爬虫-定时收集AQI日报的空气质量信息并存入MySQL数据库中 . . . 在收集数据前要首先要创建数据库和相关表,如下是我的数据库/表名/各表字段属性及其各自的功能作用介绍 数据库名称:aqi_hourdata 有第三个表,分别是: ①citys:存储站点对象,属性设置如下 ②allHourCharts:将获取到的空气质量数据存储到该表中 ③HTime:将已经获取到的某时间的数据进行存储 这三个表中的数据确实有些冗余,若是觉得繁琐,大家自己应用的时候自行调整即可,至于我为何还是要这般固执的设

butebeizhanghao的博客 749

python 每天如何定时启动爬虫任务

python2.7环境下运行 安装相关模块 想要每天定时启动,最好是把程序放在linux服务器上运行,毕竟linux可以不用关机,即定时任务一直存活;   #coding:utf8 import datetime import time def doSth(): # 把爬虫程序放在这个类里 print(u'这个程序要开始疯狂的运转啦') # 一般网站都是1:00点更新...

大蛇王的博客 3万+

【重学Node.js 第4篇】实现一个简易爬虫&启动定时任务

实现一个简易爬虫&启动定时任务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran/happy-egg-server 爬虫 目前 node.js 爬虫工具比较火的有 node-crawler puppeteer。不过我目前没打算用这些,...

Addisoni 261

python采用requests+bs4爬取Gary个人博客学习页面并用mysql存储(https://www.gary666.com/learn)

爬取说明 博客链接:链接,https://www.gary666.com/learn 输出:页面中所有的文章的标题、内容、作者、文章分类、时间 对应上图(作者是Gary、文章分类python、时间20220-7-9) 参考代码 # -*- coding: utf-8 -*- # author:Gary # 第一步,导入需要用到的库 import requests from bs4 import BeautifulSoup # 根据需要引入存储数据的库 import pymysql import tim

Gary的博客 2529

爬虫定时任务

import time from scrapy import cmdline def doSth(): # 把爬虫程序放在这个类里 zhilian_spider 是爬虫的name cmdline.execute('scrapy crawl zhilian_spider'.split()) # 想几点更新,定时到几点 def time_ti(h=17, m=54): ...

weixin_43468391的博客 755
上一篇: Java_Maven配置集成IDEA_一蓑烟雨任平生
下一篇: 一行代码搭建一个简易的本地文件服务器_附带外网教程_一蓑烟雨任平生
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值