从互联网抓取数据有时候也是企业的一个常见的需求,下边测试了从一个网站抓取的aqi信息

#!/usr/bin/env python
# -*- coding: utf-8 -*-#import urllib2
#from urllib import parse as urlparse
import urllib.request
import threading
from time import ctime
from bs4 import BeautifulSoupimport pymysql
import sys# 打开数据库连接
db = pymysql.connect(host="192.168.XX.XX", port=3306, user="test", passwd='123456', db="dbname", charset="utf8")def getPM25(cityname):site = 'http://www.pm25.com/' + cityname + '.html'#urllib.request.urlopen()函数用于实现对目标url的访问#urllib2.request.urlopen()拿到的数据是response对象,该对象有几个方法:read() , readline() , readlines() , fileno() , close() #直接用urllib.request模块的urlope()获取页面,page的数据格式为bytes类型,需要decode()解码,转换成str类型html = urllib.request.urlopen(site)#Beautiful Soup是python的一个HTML或XML的解析库,我们可以用它来方便的从网页中提取数据,它拥有强大的API和多样的解析方式soup = BeautifulSoup(html,"html.parser")city = soup.find(class_ = 'bi_loaction_city')   # 城市名称aqi = soup.find("a",{"class","bi_aqiarea_num"})  # AQI指数#aqi=str(aqi)quality = soup.select(".bi_aqiarea_right span")  # 空气质量等级result = soup.find("div",class_ ='bi_aqiarea_bottom')   # 空气质量描述print(city.text + u'AQI指数:' + aqi.text + u'\n空气质量:' + quality[0].text + result.text)print('*'*20 + ctime() + '*'*20)# 使用cursor()方法获取游标对象cursor = db.cursor()#sql = """insert into TABLE1(CITYNAME)#         values('china')"""try:cursor.execute('insert into TABLE1(CITYNAME,AQI,TEXT1,TEXT2) values("%s","%d","%s","%s")'% (city.text, int(aqi.text),quality[0].text,result.text))#cursor.execute('insert into TABLE1(CITYNAME) values("%s")' % (city))#cursor.execute(sql)# 提交到数据库执行db.commit()except Exception as e:# 如果发生错误db.rollback()print(e)print('----------------------------------')
def one_thread():   # 单线程print('One_thread Start: ' + ctime() + '\n')getPM25('hefei')getPM25('shanghai')
def two_thread():   # 多线程print('Two_thread Start: ' + ctime() + '\n')threads = []t1 = threading.Thread(target=getPM25,args=('hefei',))threads.append(t1)t2 = threading.Thread(target=getPM25,args=('shanghai',))threads.append(t2)for t in threads:# t.setDaemon(True)t.start()
def one_thread_loop():   # 单线程print('One_thread Start: ' + ctime() + '\n')city_list = ['beijing','shanghai','shenzhen','wuhan']for city in city_list:getPM25(city)if __name__ == '__main__':#one_thread()#print('\n' * 2)#two_thread()one_thread_loop()db.close()

结果:

One_thread Start: Fri Dec  8 16:44:52 2017北京AQI指数:53
空气质量:良
PM2.5浓度:21微克/立方米
击败了全国 66% 的城市,目前城市排名 121 ********************Fri Dec  8 16:44:53 2017********************
上海AQI指数:51
空气质量:良
PM2.5浓度:26微克/立方米
击败了全国 69% 的城市,目前城市排名 112 ********************Fri Dec  8 16:44:53 2017********************
深圳AQI指数:62
空气质量:良
PM2.5浓度:43微克/立方米
击败了全国 36% 的城市,目前城市排名 232 ********************Fri Dec  8 16:44:54 2017********************
武汉AQI指数:64
空气质量:良
PM2.5浓度:45微克/立方米
击败了全国 31% 的城市,目前城市排名 249 ********************Fri Dec  8 16:44:55 2017********************Process finished with exit code 0

python3抓取aqi相关推荐

  1. python获取app信息的库_基于python3抓取pinpoint应用信息入库

    这篇文章主要介绍了基于python3抓取pinpoint应用信息入库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Pinpoint是用Java编写 ...

  2. Python3抓取Bing每日图片做桌面背景,并设置为开机更新背景

    该程序是我学习Python的第一个小程序,用于熟悉Python语法,其中借鉴了很多其他网友的Code,望谅解. 参考列表 主要参考博客列表如下: LittleBearLi http://blog.cs ...

  3. python3抓取数据_python3抓取到的拉勾数据统计

    趁着最近有时间写了个拉勾爬虫抓取了后端.前端和移动端技术岗位的数据,总共大约6多万条记录,对其取前十名进行统计 按地域划分: 可以看出北上广深杭的数量远远超出其它城市,机会相对较多 2. 按融资阶段来 ...

  4. [知识图谱实战篇] 一.数据抓取之Python3抓取JSON格式的电影实体

    前面作者讲解了很多知识图谱相关的原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但还是缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者学习了 ...

  5. Python3 抓取豆瓣电影Top250

    利用 requests 抓取豆瓣电影 Top 250: import re import requestsdef main(url):global numheaders = {"User-A ...

  6. Python3 抓取网页小说

    前提: 为了愉快地读小说,保存成txt文件肯定是最好的. 找到了自己想看的小说以后,百度查到网页,然后用自己的爬虫就可以轻松获得小说内容,并生成txt文件了. \(o)/ 观察网址: 这次抓取的目标小 ...

  7. python3 抓取西刺网免费代理IP并验证是否可用

    爬取西祠网免费高匿代理IP并验证是否可用存到csv文件 #导入模块import requestsimport chardetimport randomfrom scrapy.selector impo ...

  8. python3抓取电影天堂存mysql出错如何解决? (已解决)

    项目简介:抓取电影天堂的数据,xpath解析,存mysql 问题描述: 连续抓取并存储六页数据后,从第七页开始就不能存数据库了,直接回滚数 据库,至今仍未解决,请大佬会的麻烦解答一下      已解决 ...

  9. python3抓取b站弹幕_python3写爬取B站视频弹幕功能

    需要准备的环境: 一个B站账号,需要先登录,否则不能查看历史弹幕记录 联网的电脑和顺手的浏览器,我用的Chrome Python3环境以及request模块,安装使用命令,换源比较快: pip3 in ...

最新文章

  1. PostgreSQL消息乱码的解决
  2. 腾讯医疗AI实验室:3篇论文被国际顶尖会议收录
  3. do…while循环
  4. 「权威发布」2019年大学生电子设计竞赛获奖名单
  5. 折半搜索+洛谷 P2962 [USACO09NOV]Lights G
  6. rabbitmq异步_在Node.js中使用RabbitMQ和Tortoise进行异步消息传递
  7. echart同一个dom下多次动态渲染值,防止值、事件重复互相影响
  8. docker容器网络通讯——外部访问内部
  9. VS2008中MFC界面编程Caption中文全是乱码的解决办法 -转载
  10. python opencv人脸解锁_教你使用python+Opencv完成人脸解锁
  11. 线性规划问题求解(Excel、python和手工求解)
  12. 【计算机组成原理】数据通路
  13. 蓝牙耳机连接笔记本音量大的问题
  14. 问题 F: 小明与隔壁老王之间不得不说的故事
  15. Microsoft Web Farm Framework (WFF) 2.0正式发布
  16. eclipse如何设置背景颜色
  17. Windows安装VMware(Linux系统)
  18. 密度计算机公式,密度计算公式及单位
  19. Viewer.js Javascript/jQuery图片查看器
  20. 构型空间(Configuration Space)(下)

热门文章

  1. 服务器2颗cpu的性能,DIY从入门到放弃:两颗CPU性能更强吗?
  2. 1.STM32F103-点亮第一颗LED
  3. 一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
  4. 啊?你还在用vmware,快来试试免费好用的Hyper V吧!
  5. AltiumDesigner PCB案牍(3)—— PADS工程文件导入AD
  6. Linux:冯诺伊曼体系结构 | 操作系统 | 显卡 | 主板
  7. 【物理应用】大气辐射和透射率模型及太阳和月亮模型(Matlab代码实现)
  8. opencv中的透射变换
  9. win10下使用Winsat对系统进行评分
  10. 急!灾区的食物依然短缺!(找不到原题出处只能这样了.....)