【Python3 爬虫】17_爬取天气信息

news/2024/7/19 11:40:36 标签: 爬虫, 数据库, python

需求说明

到网站http://lishi.tianqi.com/kunming/201802.html可以看到昆明2018年2月份的天气信息,然后将数据存储到数据库

实现代码

#-*-coding:utf-8 -*-
import urllib.request
import random
import pymysql
from bs4 import BeautifulSoup

user_agent = [
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36',  
        'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10',  
        'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',  
        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',  
        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER',  
        'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)', 
]

headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',  
'Accept-Encoding': 'gzip, deflate, sdch',  
'Accept-Language': 'zh-CN,zh;q=0.8',  
'User-Agent': user_agent[random.randint(0,5)]}



print("连接到mysql服务器")
db = pymysql.connect("192.168.6.128","root","root","test_db",charset="utf8")
print("******连接成功********")

cursor = db.cursor()

cursor.execute("DROP TABLE IF EXISTS TB")

sql = """CREATE TABLE TB(DT_DATE VARCHAR(10),
    HIGH_TEMP int,LOW_TEMP int,WEATHER VARCHAR(40),WIND VARCHAR(40),WIND_TAIL VARCHAR(10))"""
cursor.execute(sql)

url = "http://lishi.tianqi.com/kunming/201802.html"

index = urllib.request.urlopen(url).read()
print(index)
#print(index)
index_soup = BeautifulSoup(index)

i = 1
#此处的class_=""是为了过滤calss="t1"的标题栏 
uls = index_soup.find("div",class_="tqtongji2").find_all("ul",class_="") #获取全部的ul作为一个列表

for ul in uls:
    lis = ul.find_all('li') #将每个li下的标签获取为列表
    li = [x for x in lis]
    V_DT_DATE = li[0].text.strip()

    V_HIGH_TEMP = li[1].text.strip()
    V_LOW_TEMP = li[2].text.strip()
    V_WEATHER = li[3].text.strip()
    V_WIND = li[4].text.strip()
    print(V_WIND)
    V_WIND_TAIL = li[5].text.strip()
    inser_tb = ("INSERT INTO TB " "VALUES(%s,%s,%s,%s,%s,%s)")
    data = (V_DT_DATE,V_HIGH_TEMP,V_LOW_TEMP,V_WEATHER,V_WIND,V_WIND_TAIL)
    cursor.execute(inser_tb,data)
    db.commit()
print("数据已经爬取并且存储到Mysql")
db.close()

 

运行上述程序后,在数据库查询结果如下:

image

转载于:https://www.cnblogs.com/OliverQin/p/8976150.html


http://www.niftyadmin.cn/n/1504331.html

相关文章

I Hate It

I Hate It Time Limit : 9000/3000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 16 Accepted Submission(s) : 10 Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高…

MySQL用navicat 中文乱码

1.将mysql的my.ini配置文件里面编码方式修改为utf8 2.在navicat中编辑连接属性-Current… 注意:这时候在dos命令下,插入中文会报错。查询表内容中文乱码。 在dos命令下操作,需要将编码设置成gbk。

令人忧虑, 不阅读的中国人

令人忧虑, 不阅读的中国人 孟莎美 我坐在从德国法兰克福飞往上海的飞机上. 正是长途飞行中的睡眠时间, 机舱已熄灯, 我蹑手蹑脚地起身去厕所. 座位离厕所比较远, 我穿过很多排座位, 吃惊地发现, 我同时穿过了很多排ipad――不睡觉玩ipad的, 基本上都是中国人, 而且他们基本上都…

(一)MySQL基本操作

(数据库) ##MySQL基本操作 登录 mysql -uroot -pnet start mysql,在bin目录下(管理员权限运行的cmd) 创建数据库 --create database 数据库的名字 create database day06; --创建数据库,指定字符集 create database 数据库名字…

win7下怎么安装IIS

1、点击开始---控制面板---程序---打开或关闭Windows功能, 到这里我们找到internet信息服务S2005 中,如果要调试站点的话,必须有“Windows身份验证” 。“摘要式身份验证” 是使用 Windows 域控制器对请求访问 Web 服务器上内容的用户进行身份…

android 单选框和复选框

<?xml version"1.0" encoding"utf-8"?> <TableLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:layout_width"fill_parent"android:layout_height"…

深入字节码 -- 玩转 ASM-Bytecode

为什么80%的码农都做不了架构师&#xff1f;>>> 本文是《深入字节码 -- 使用 ASM 实现 AOP》的后续博文。在上一篇文章中介绍了如何使用 ASM 动态安插代码到类中&#xff0c;从而简单实现 Aop。文章得到了广大朋友好评&#xff0c;我也希望可以不负众望继续写出可以…

Tornado的基本知识

Tornado是FriendReed使用的可扩展的非阻塞式的web服务器及其相关工具的开源版本。 这个框架看起来有些像web.py或者Google的webapp&#xff0c;不过为了能有效利用非阻塞服务器环境&#xff0c;这个框架还包含了一些相关的有用工具和优化。 Tornado和现在的主流Web服务器框架&a…