炒鸡简单爬虫技术大解密(自动更新数据库)
Posted 小胖猪的魔法斗篷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了炒鸡简单爬虫技术大解密(自动更新数据库)相关的知识,希望对你有一定的参考价值。
欢迎微博/Ins关注
@ciciechen
哇,终于要写一篇正式的文章了!
这几年大数据几乎成为每一个人口中津津乐道的词,虽然我个人觉得这被严重商业化(根本没搞清什么是大数据嘛),还是有必要普及一下非常非常非常简单的爬虫指南!
#什么是爬虫
爬虫技术是利用HTTP Request抓取网络数据的一种技术。简单的说呢,就是当你没有足够量的数据库做有效分析时,爬数据就能忙你一个大大的忙!
#Why python
最近关于data science其实大家最常见的语言就是python和R了。两种语言都非常好用,也有各自优势,而python对于初学者来说极易下手(实在是看两行就会了!)。那么其实两者是互补关系,绝非敌对,像我还会搭配MATLAB再做一些数据分析。本文以python语言来分享实例。
最近教授布置了一个作业,希望我们能够利用政府公开资料(open data)分析数据,不仅能巩固知识,更重要是能为民众生活带来改善。
我查了一下发现中国ZF的open data真的少得可怜...那么就拿台湾政府公开资料做一些分析。(题外话:台湾的公开资料做的真的挺不错的,数据种类也比较丰富,可利用性强。)
首先我在data gov TW里面找到了“每月盛產農產品產地”
那么就可以做天气、地域等等对农产品盛产分析(需要结合其他资料)。
SQLite 3的使用方法非常简单,在Firefox中搜索SQLite 3 firefox,选择添加至firefox元件就行啦。
现在我们有了资料的网址和数据库,准备工作就可以告一段落了。在cmd中呼叫ipython notebook,进入jupiter编译器,新建python 3。
这里小小分享一下我不太成熟的代码,如果大家有优化建议请后台敲我~
import sqlite3,ast,requests,os
from bs4 import BeautifulSoup
conn = sqlite3.connect('Fruits.sqlite') # 建立资料库连线
cursor = conn.cursor() # 建立 cursor 物件
# 建立一个表单
sqlstr='''
CREATE TABLE IF NOT EXISTS TableFruits ("Number" INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL UNIQUE ,"Type" TEXT NOT NULL ,"Month" INTEGER ,"Crop" TEXT NOT NULL ,"County" TEXT NOT NULL ,"Town" TEXT NOT NULL )
'''
cursor.execute(sqlstr)
url = "http://data.coa.gov.tw/Service/OpenData/DataFileService.aspx?UnitId=061"
# 读取网页原始码
html=requests.get(url).text.encode('utf-8-sig')
print('资料已更新...')
sp=BeautifulSoup(html,'html.parser')
# 将网页内转换 list, list 中的元素是 dict
jsondata = ast.literal_eval(sp.text)
# 删除资料表内容
conn.execute("delete from TableFruits")
conn.commit()
Number=1
for Type in jsondata:
type=Type["type"]
month=int(Type["month"])
crop=Type["crop"]
county=Type["county"]
town=Type["town"]
# 新增记录
sqlstr="insert into TableFruits values({},'{}','{}','{}','{}','{}')" .format(Number,type,month,crop,county,town)
cursor.execute(sqlstr)
Number+=1
conn.commit() # 主动更新
conn.close() # 关闭连线
结束以上步骤后,我们可以在SQLite 3中导入爬到的数据。这里我只爬了自己需要的几个栏位,并没有爬全部数据(针对自己想要做的分析爬自己需要的数据)。总共有三十多万笔资料。
这段代码每次运行的时候可以自动检查想要读取的资料有没有更新过,是不是比自己check省心省力多了呢。
当然这是最最最简单的爬虫技术,互联网中复杂的数据远比open data难收集得多,比如微博、淘宝的数据... 加上验证码、用户登录等等,那下次有空再和大家分享啦~
双手奉上最好用的python学习手册给大家 ^^ 祝大家学习开心!
以上是关于炒鸡简单爬虫技术大解密(自动更新数据库)的主要内容,如果未能解决你的问题,请参考以下文章