第一部分主要简单介绍三个问题(觉得无聊的直接调至第二部分):
1、什么是大数据?
2、什么是数据挖掘?
3、大数据和数据挖掘的区别?
由于前面几节课老师普及了大数据等一些基础知识,这里我并没有详细介绍,只是给几张图片,让大家简单了解下大数据和数据挖掘相关的基础概念,我分享更多的是实战以及编程。
<一>.大数据(Big Data)
大数据(big data)指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。
下图是大数据经典的4V特征。
说到大数据,就不得不提Hadoop,而说到Hadoop,又不得不提Map-Reduce。
<一>.安装Python
在开始使用Python编程之前,需要介绍Python的安装过程。python解释器在Linux中可以内置使用安装,windows中需要去http://www.python.org官网downloads页面下载。具体步骤如下:
第一步:打开Web浏览器并访问http://www.python.org官网;
选中上图中第三个图标,即点击“Python (command line)命令行模式”,运行程序输入如下代码:
print 'hello world'
则python命令行模式的解释器会打印输出“hello world”字符串,如下图所示。
选中图中的第一个图片,点击“IDLE (Python GUI)”,即运行Python的集成开发环境(Python Integrated Development Environment,IDLE),运行结果如下图。
注意2:建议大家使用IDLE写脚本,完整的代码而不是通过命令行模式。
def fun1():
print 'Hello world'
print 'by eastmount csdn'
print 'output'
fun1()
def fun2(val1,val2):
print val1
print val2
fun2(8,15)
保存文件。并在test.py文件里点击Run->Run Module,输出结果如下图所示。
需要注意的是Ptthon中if条件语句条件无需圆括号(),条件后面需要添加冒号,它没有花括号{}而是使用TAB实现区分。其中condition条件判断通常有布尔表达式(True|False 0-假|1-真 非0即真)、关系表达式(>= <= == !=)和逻辑运算表达式(and or not)。
(2).双分支语句
它的基本格式是:
if condition:
statement
statement
else:
statement
statement
(3).多分支语句
if多分支由if-elif-else组成,其中elif相当于else if,同时它可以使用多个if的嵌套。具体代码如下所示:
#双分支if-else
count = input("please input:")
print 'count=',count
if count>80:
print 'lager than 80'
else:
print 'lower than 80'
print 'End if-else'
#多分支if-elif-else
number = input("please input:")
print 'number=',number
if number>=90:
print 'A'
elif number>=80:
print 'B'
elif number>=70:
print 'C'
elif number>=60:
print 'D'
else:
print 'No pass'
print 'End if-elif-else'
#条件判断
sex = raw_input("plz input your sex:")
if sex=='male' or sex=='m' or sex=='man':
print 'Man'
else:
print 'Woman'
#循环while计数1+2+..+100
i = 1
s = 0
while i <= 100:
s = s+i
i = i+1
else:
print 'exit while'
print 'sum = ',s
'''
输出结果为:exit while
sum = 5050
'''
4、for循环
该循环语句的基础格式为:
for target in sequences:
statements
target表示变量名,sequences表示序列,常见类型有list(列表)、tuple(元组)、strings(字符串)和files(文件).
Python的for没有体现出循环的次数,不像C语言的for(i=0;i<10;i++)中i循环计数,Python的for指每次从序列sequences里面的数据项取值放到target里,取完即结束,取多少次循环多少次。其中in为成员资格运算符,检查一个值是否在序列中。同样可以使用break和continue跳出循环。
下面是文件循环遍历的过程:
#文件循环遍历三种对比
for n in open('for.py','r').read():
print n,
print 'End'
for n in open('for.py','r').readlines():
print n,
print 'End'
for n in open('for.py','r').readline():
print n,
print 'End'
#coding=utf-8
import os
import string
print '贵州财经大学大数据金融学院,大家好!'
def fun1():
print 'Hello world'
print 'Goodbye!'
#计算和
def fun2(n, m):
return n+m
#输出结果
fun1()
s = fun2(3,8)
print 'sum = ' + str(s)
print 'sum =', s
#判断语句 u表示unicode字符串
if(s>10):
print u'大于10'
else:
print u'小于等于10'
#循环语句
i = 1
s = 0
while i<=100:
s = s + i
i = i + 1
else:
print 'end while'
print 'sum =', s
'''
输出结果为:sum=5050
'''
#for循环
num = [2, 4, 6, 8, 10]
for x in num:
print x
输出结果如下图所示:
接下来需要详解介绍爬虫相关的知识了,这里主要涉及到下面几个知识:
easy_install的用法:
1) 安装一个包
$ easy_install
$ easy_install "=="
2) 升级一个包
$ easy_install -U ">="
pip的用法
1) 安装一个包
$ pip install
$ pip install ==
2) 升级一个包 (如果不提供version号,升级到最新版本)
$ pip install --upgrade >=
3)删除一个包
$ pip uninstall
第一步:下载PIP软件
可以在官网http://pypi.python.org/pypi/pip#downloads下载,同时cd切换到PIP目录,在通过python setup.py install安装。而我采用的是下载pip-Win_1.7.exe进行安装,下载地址如下:
这里作者提供几种方法供大家下载:
http://download.csdn.net/detail/eastmount/9598651
第二步:安装PIP软件
在使用pip install urllib或pip install urllib2后,下面这段代码是下载网页。
#coding=utf-8
import os
import urllib
import httplib2
import webbrowser as web
#爬取在线网站
url = "http://www.baidu.com/"
content = urllib.urlopen(url).read()
open("baidu.html","w").write(content)
#浏览求打开网站
web.open_new_tab("baidu.html")
首先我们调用的是urllib2库里面的urlopen方法,传入一个URL,这个网址是百度首页,协议是HTTP协议,当然你也可以把HTTP换做FTP、FILE、HTTPS 等等,只是代表了一种访问控制协议,urlopen一般接受三个参数,它的参数如下:
urlopen(url, data, timeout)
第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。response = urllib2.urlopen("http://www.baidu.com")
print response.read()
response对象有一个read方法,可以返回获取到的网页内容。#coding=utf-8
import os
import urllib
import httplib2
import webbrowser as web
#爬取在线网站
url = "http://www.baidu.com/"
content = urllib.urlopen(url).read()
open("baidu.html","w").write(content)
#浏览求打开网站
web.open_new_tab("baidu.html")
#下载图片 审查元素
pic_url = "https://www.baidu.com/img/bd_logo1.png"
pic_name = os.path.basename(pic_url) #删除路径获取图片名字
urllib.urlretrieve(pic_url, pic_name)
#本地文件
content = urllib.urlopen("first.html").read()
print content
#下载图片 审查元素
pic_url = "imgs/bga1.jpg"
pic_name = os.path.basename(pic_url) #删除路径获取图片名字
urllib.urlretrieve(pic_url, pic_name)
import urllib
def callbackfunc(blocknum, blocksize, totalsize):
'''回调函数
@blocknum: 已经下载的数据块
@blocksize: 数据块的大小
@totalsize: 远程文件的大小
'''
percent = 100.0 * blocknum * blocksize / totalsize
if percent > 100:
percent = 100
print "%.2f%%"% percent
url = 'http://www.sina.com.cn'
local = 'd:\\sina.html'
urllib.urlretrieve(url, local, callbackfunc)
HTML DOM是HTML Document Object Model(文档对象模型)的缩写,HTML DOM则是专门适用于HTML/XHTML的文档对象模型。熟悉软件开发的人员可以将HTML DOM理解为网页的API。它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。
Python挖掘开发
欢迎大家学习《基于Python的Web大数据爬取实战指南》!
这个例子的第一个元素就是元素,在这个元素的起始标签和终止标签之间,又有几个标签分别起始和闭合,包括、 Selenium用于Web应用程序测试的工具,模拟浏览器用户操作,通过Locating Elements 定位元素。安装过程如下图所示,通过pip install selenium安装。
注意:需要cd去到Scripts目录进行安装。
selenium结合浏览器定位的基本函数包括:
#coding=utf-8
import os
import urllib
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#Open PhantomJS
#driver = webdriver.PhantomJS(executable_path="phantomjs-1.9.1-windows\phantomjs.exe")
driver = webdriver.Firefox()
#访问url
driver.get("https://www.baidu.com/")
print u'URL:'
print driver.current_url
#当前链接: https://www.baidu.com/
print u'标题:'
print driver.title
#标题: 百度一下, 你就知道
#print driver.page_source
#源代码
#定位元素,注意u1(数字1)和ul(字母L)区别
print u'\n\n定位元素id:'
info1 = driver.find_element_by_id("u1").text
print info1
#定位元素
print u'\n\n定位元素xpath:'
info3 = driver.find_element_by_xpath("//div[@id='u1']/a")
print info3.text
输出如下图所示: