pytho网络爬虫

# encoding:utf8

from urllib import request
from bs4 import BeautifulSoup
import pymysql
import time


#下载器
def htmlDownload(url):
    req = request.Request(url); #返回文件类型的对象
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2723.3 Safari/537.36')
    res = request.urlopen(req) #发送请求
    html = res.read().decode("utf8").encode("utf8")
    return html

#解析器代码
def htmlParser(html):
    soup = BeautifulSoup(html, 'html.parser', from_encoding="utf8")
    timenode = soup.find('div', class_ = 'remark')
    updatatime = timenode.get_text()[-15:] #去掉无用字符得到 '2018年03月07日 19时'
    dataNode = soup.find("table")
    tr_node = dataNode.find_all("tr")
    data = []
    for i in range(1,5):
        d = []
        td_node = tr_node[i].find_all("td")
        for j in range(0,6):
            
            if j == 2:
                alt = td_node[j].find('img')['alt']
                d.append(alt[-4:])
            else:
                d.append(td_node[j].get_text())
        data.append(d)   
    return updatatime, data

#将爬取的数据写入到数据库中
def dataWriter(updatatime, data):
    #创建链接对象
    connection = pymysql.Connect(host='127.0.0.1', port=3306, user='root', password='root', db='environment', charset='utf8')
    cursor = connection.cursor()  #创建游标
    
    for d in data:
        try:
            insert_sql = "insert into pdsenvironment(updatatime, AreaName, AQI, PollutionGrade, PM2_5, PM10, FirstItem) values('%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (updatatime, d[0], d[1], d[2], d[3], d[4], d[5])
            cursor.execute(insert_sql)  #执行sql,更新数据库
            connection.commit()   #提交,保存新建或者修改的数据
            print("%s   %s :数据已经存入数据库!"% (updatatime, d[0]))
        except Exception as e:
            print("%s   %s :该数据在数据库中已存在!"% (updatatime, d[0]))
    cursor.close()
    connection.close()
    

def getEnvironmentData():
    try:
        url = "http://www.86kongqi.com/city/pingdingshan.html"
        html = htmlDownload(url)
        updatatime, data = htmlParser(html)
        dataWriter(updatatime, data)
    except Exception as e:
        print("出现异常!一分钟后重试……")
        print("Exception: "+str(e))
        time.sleep(60)
        getEnvironmentData()
        

while True:
    print("开始工作!")
    getEnvironmentData();
    print("休息当中……")
    print("\n")
    time.sleep(3600)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么学Python】 Python 是当今非常热门的语言之一,2020年的 TIOBE 编程语言排行榜中 ,Python名列第一,并且其流行度依然处在上升势头。 在2015年的时候,在网上还经常看到学Python还是学R的讨论,那时候老齐就选择了Python,并且开始着手出版《跟老齐学Python》。时至今日,已经无需争论。Python给我们带来的,不仅仅是项目上的收益,我们更可以从它“开放、简洁”哲学观念中得到技术发展路线的启示。 借此机会,老齐联合CSDN推出了本课程,希望能影响更多的人走进Python,踏入编程的大门。 【课程设计】 本课程共包含三大模块: 一、基础知识篇 内置对象和基本的运算、语句,是Python语言的基础。本课程在讲解这部分知识的时候,不是简单地将各种知识做简单的堆砌,而是在兼顾内容的全面性的同时,更重视向学习者讲授掌握有关知识的方法,比如引导学习者如何排查错误、如何查看和理解文档等。   二、面向对象篇 “面向对象(OOP)”是目前企业开发主流的开发方式,本课程从一开始就渗透这种思想,并且在“函数”和“类”的学习中强化面向对象开发方式的学习——这是本课程与一般课程的重要区别,一般的课程只在“类”这里才提到“对象”,会导致学习者茫然失措,并生畏惧,乃至于放弃学习。本课程则是从开始以“润物细无声”的方式,渗透对象概念,等学习到本部分的时候,OOP对学习者而言有一种“水到渠成”的感觉。   三、工具实战篇 在项目实战中,除了前述的知识之外,还会用到很多其他工具,至于那些工具如何安装?怎么自己做工具?有那些典型工具?都是这部分的内容。具体来说,就是要在这部分介绍Python标准库的应用以及第三方包的安装,还有如何开发和发布自己的工具包。此外,很多学习Python的同学,未来要么从事数据科学、要么从事Web开发,不论哪个方向,都离不开对数据库的操作,本部分还会从实战的角度,介绍如何用Python语言操作常用数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值