一.安装Python及基础知识


<一>.安装Python
在开始使用Python编程之前,需要介绍Python的安装过程。python解释器在Linux中可以内置使用安装,windows中需要去http://www.python.org官网downloads页面下载。具体步骤如下:
第一步:打开Web浏览器并访问http://www.python.org官网;


第二步:在官网首页点击Download链接,进入下载界面,选择Python软件的版本,作者选择下载python 2.7.8,点击“Download”链接。
Python下载地址:
第三步:选择文件下载地址,并下载文件。
第四步:双击下载的“python-2.7.8.msi”软件,并对软件进行安装。


第五步:在Python安装向导中选择默认设置,点击“Next”,选择安装路径,这里设置为默认的安装路径“C:\Python27”,点击“Next”按钮,如图所示。
注意1:建议将Python安装在C盘下,通常路径为C:\Python27,不要存在中文路径。


在Python安装向导中选择默认设置,点击“Next”,选择安装路径,这里设置为默认的安装路径“C:\Python27”,点击“Next”按钮。


安装成功后,如下图所示:



第六步:假设安装一切正常,点击“开始”,选中“程序”,找到安装成功的Python软件,如图所示:

选中上图中第三个图标,即点击“Python (command line)命令行模式”,运行程序输入如下代码:
print 'hello world'
python命令行模式的解释器会打印输出“hello world”字符串,如下图所示。

选中图中的第一个图片,点击“IDLE (Python GUI)”,即运行Python的集成开发环境(Python Integrated Development Environment,IDLE),运行结果如下图。
注意2:建议大家使用IDLE写脚本,完整的代码而不是通过命令行模式。



<二>.Python基础知识
这里简单入门介绍,主要介绍下条件语句、循环语句、函数等基础知识。
1、函数及运行
这里举个简单的例子。打开IDLE工具->点击栏"File"->New File新建文件->命名为test.py文件,在test文件里添加代码如下:
[python] view plain copyprint?
  1. deffun1():
  2. print'Helloworld'
  3. print'byeastmountcsdn'
  4. print'output'
  5. fun1()
  6. deffun2(val1,val2):
  7. printval1
  8. printval2
  9. fun2(8,15)
保存文件。并在test.py文件里点击Run->Run Module,输出结果如下图所示。


2、条件语句
包括单分支、双分支和多分支语句,if-elif-else。
(1).单分支语句
它的基本格式是:
if condition:
statement
statement

需要注意的是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的嵌套。具体代码如下所示:

[python] view plain copyprint?
  1. #双分支if-else
  2. count=input("pleaseinput:")
  3. print'count=',count
  4. ifcount>80:
  5. print'lagerthan80'
  6. else:
  7. print'lowerthan80'
  8. print'Endif-else'
  9. #多分支if-elif-else
  10. number=input("pleaseinput:")
  11. print'number=',number
  12. ifnumber>=90:
  13. print'A'
  14. elifnumber>=80:
  15. print'B'
  16. elifnumber>=70:
  17. print'C'
  18. elifnumber>=60:
  19. print'D'
  20. else:
  21. print'Nopass'
  22. print'Endif-elif-else'
  23. #条件判断
  24. sex=raw_input("plzinputyoursex:")
  25. ifsex=='male'orsex=='m'orsex=='man':
  26. print'Man'
  27. else:
  28. print'Woman'

3、while循环语句
while循环语句的基本格式如下:
while condition:
statement
statement
else:
statement
statement

其中判断条件语句condition可以为布尔表达式、关系表达式和逻辑表达式,else可以省略(此处列出为与C语言等区别)。举个例子:
[python] view plain copyprint?
  1. #循环while计数1+2+..+100
  2. i=1
  3. s=0
  4. whilei<=100:
  5. s=s+i
  6. i=i+1
  7. else:
  8. print'exitwhile'
  9. print'sum=',s
  10. '''''
  11. 输出结果为:exitwhile
  12. sum=5050
  13. '''

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跳出循环。
下面是文件循环遍历的过程:

[python] view plain copyprint?
  1. #文件循环遍历三种对比
  2. forninopen('for.py''r').read():
  3. printn,
  4. print'End'
  5. forninopen('for.py''r').readlines():
  6. printn,
  7. print'End'
  8. forninopen('for.py''r').readline():
  9. printn,
  10. print'End'

5、课堂讲解代码
这是我课堂讲解的代码,仅供大家参考:
[python] view plain copyprint?
  1. #coding=utf-8
  2. importos
  3. importstring
  4. print'贵州财经大学大数据金融学院,大家好!'
  5. deffun1():
  6. print'Helloworld'
  7. print'Goodbye!'
  8. #计算和
  9. deffun2(n,m):
  10. returnn+m
  11. #输出结果
  12. fun1()
  13. s=fun2(3,8)
  14. print'sum='+str(s)
  15. print'sum=',s
  16. #判断语句u表示unicode字符串
  17. if(s>10):
  18. printu'大于10'
  19. else:
  20. printu'小于等于10'
  21. #循环语句
  22. i=1
  23. s=0
  24. whilei<=100:
  25. s=s+i
  26. i=i+1
  27. else:
  28. print'endwhile'
  29. print'sum=',s
  30. '''''
  31. 输出结果为:sum=5050
  32. '''
  33. #for循环
  34. num=[2,4,6,8,10]
  35. forxinnum:
  36. printx
输出结果如下图所示:


二. 安装PIP及第三方包

接下来需要详解介绍爬虫相关的知识了,这里主要涉及到下面几个知识:



爬虫主要使用Python(字符串|urllib)+Selenium+PhantomJS+BeautifulSoup。



在介绍爬虫及Urllib下载网页或图片之前,先交大家如何使用pip安装第三方的库。

PIP

在介绍介绍它们之前,需要安装PIP软件。正如xifeijian大神所说:“作为Python爱好者,如果不知道easy_install或者pip中的任何一个的话,那么......”。
easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版,提供更好的提示信息,删除package等功能。老版本的python中只有easy_install,没有pip。常见的具体用法如下:
[python] view plain copyprint?
  1. easy_install的用法:
  2. 1)安装一个包
  3. $easy_install<package_name>
  4. $easy_install"<package_name>==<version>"
  5. 2)升级一个包
  6. $easy_install-U"<package_name>>=<version>"
  7. pip的用法
  8. 1)安装一个包
  9. $pipinstall<package_name>
  10. $pipinstall<package_name>==<version>
  11. 2)升级一个包(如果不提供version号,升级到最新版本)
  12. $pipinstall--upgrade<package_name>>=<version>
  13. 3)删除一个包
  14. $pipuninstall<package_name>


第一步:下载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 and virtualenv installed"表示安装成功,那怎么测试PIP安装成功呢?

第三步:配置环境变量
此时在cmd中输入pip指令会提示错误“不是内部或外部命令”。
注意:两种解决方法,一种是通过cd ..去到Srcipts环境进行安装,pip install...
方法二:另一种配置Path路径。
需要添加path环境变量。PIP安装完成后,会在Python安装目录下添加python\Scripts目录,即在python安装目录的Scripts目录下,将此目录加入环境变量中即可!过程如下:


第四步:使用PIP命令
下面在CMD中使用PIP命令,“pip list outdate”列举Python安装库的版本信息。


注意:安装成功后,会在Python环境中增加Scripts文件夹,包括easy_install和pip。


PIP安装过程中可能出现各种问题,一种解决方法是去到python路径,通过python set_up.py install安装;另一种是配置Path环境比例。

课堂重点知识:
第一节课主要想让大家体会下Python网络爬虫的过程及示例。需要安装的第三方库主要包括三个:
pip install httplib2
pip install urllib
pip install selenium

在安装过程中,如果pip install urllib报错,是因为httplib2包含了,可直接用。


注意:如果pip安装报错ascii编码问题,需要把计算机名称从中文修改为英文名。


三. Urllib下载网页及图片

在使用pip install urllib或pip install urllib2后,下面这段代码是下载网页。

[python] view plain copyprint?
  1. #coding=utf-8
  2. importos
  3. importurllib
  4. importhttplib2
  5. importwebbrowserasweb
  6. #爬取在线网站
  7. url="http://www.baidu.com/"
  8. content=urllib.urlopen(url).read()
  9. open("baidu.html","w").write(content)
  10. #浏览求打开网站
  11. web.open_new_tab("baidu.html")
首先我们调用的是urllib2库里面的urlopen方法,传入一个URL,这个网址是百度首页,协议是HTTP协议,当然你也可以把HTTP换做FTP、FILE、HTTPS 等等,只是代表了一种访问控制协议,urlopen一般接受三个参数,它的参数如下:
[python] view plain copyprint?
  1. urlopen(url,data,timeout)
第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT。
第一个参数URL是必须要传送的,在这个例子里面我们传送了百度的URL,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。

[python] view plain copyprint?
  1. response=urllib2.urlopen("http://www.baidu.com")
  2. printresponse.read()
response对象有一个read方法,可以返回获取到的网页内容。
获取的网页本地保存为"baidu.html",通过浏览器打开如下图所示:


然后是需要下载图片,这里需要学会找到图片的URL,如下图百度的LOGO,可以通过浏览器右键"审查元素"或"检查"来进行定位。


定位URL后,再通过函数urlretrieve()进行下载。

[python] view plain copyprint?
  1. #coding=utf-8
  2. importos
  3. importurllib
  4. importhttplib2
  5. importwebbrowserasweb
  6. #爬取在线网站
  7. url="http://www.baidu.com/"
  8. content=urllib.urlopen(url).read()
  9. open("baidu.html","w").write(content)
  10. #浏览求打开网站
  11. web.open_new_tab("baidu.html")
  12. #下载图片审查元素
  13. pic_url="https://www.baidu.com/img/bd_logo1.png"
  14. pic_name=os.path.basename(pic_url)#删除路径获取图片名字
  15. urllib.urlretrieve(pic_url,pic_name)
  16. #本地文件
  17. content=urllib.urlopen("first.html").read()
  18. printcontent
  19. #下载图片审查元素
  20. pic_url="imgs/bga1.jpg"
  21. pic_name=os.path.basename(pic_url)#删除路径获取图片名字
  22. urllib.urlretrieve(pic_url,pic_name)

重点知识:
urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
urlretrieve方法直接将远程数据下载到本地。
如果需要显示进度条,则使用下面这段代码:

[python] view plain copyprint?
  1. importurllib
  2. defcallbackfunc(blocknum,blocksize,totalsize):
  3. '''''回调函数
  4. @blocknum:已经下载的数据块
  5. @blocksize:数据块的大小
  6. @totalsize:远程文件的大小
  7. '''
  8. percent=100.0*blocknum*blocksize/totalsize
  9. ifpercent>100:
  10. percent=100
  11. print"%.2f%%"%percent
  12. url='http://www.sina.com.cn'
  13. local='d:\\sina.html'
  14. urllib.urlretrieve(url,local,callbackfunc)



四. HTML网页基础知识及审查元素

HTML DOM是HTML Document Object Model(文档对象模型)的缩写,HTML DOM则是专门适用于HTML/XHTML的文档对象模型。熟悉软件开发的人员可以将HTML DOM理解为网页的API。它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。


DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中导航寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。


HTML DOM 定义了访问和操作HTML文档的标准方法。 HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。它们都是一个节点(Node),就像公司的组织结构图一样。 我们现在从另一个角度来审视源代码,first.html的源码如下:
[python] view plain copyprint?
  1. <html>
  2. <head>
  3. <title>Python挖掘开发</title>
  4. </head>
  5. <body>
  6. 欢迎大家学习《基于Python的Web大数据爬取实战指南》!<br>
  7. </body>
  8. </html>
这个例子的第一个元素就是<html>元素,在这个元素的起始标签和终止标签之间,又有几个标签分别起始和闭合,包括<head>、<title>和<body>。<head>和<body>标签是直接被<html>元素包含的,而<title>标签则包含在<head>标签内。要描述一个HTML网页的这种多层结构,用树来进行类比是最好的方式。树形结构如下图所示:

重点:
在网络爬虫中,通常需要结合浏览器来定位元素,浏览器右键通常包括两个重要的功能:查看源代码和审查或检查元素。


通过审查元素,可以定位到需要爬取图片或网页的HTML源文件,通常是table或div的布局,这些HTML标签通常是成对出现的,如<html></html>、<div></div>等;同时会包括一些属性id、name、class来指定该标签。如:
<div id="content" name="n1" class="cc">....</div>





五. 安装Selenium及网页简单爬取

Selenium用于Web应用程序测试的工具,模拟浏览器用户操作,通过Locating Elements 定位元素。安装过程如下图所示,通过pip install selenium安装。
注意:需要cd去到Scripts目录进行安装。




selenium结合浏览器定位的基本函数包括:


推荐文章,同时下节课会详细介绍。
[python爬虫] Selenium常见元素定位方法和操作的学习介绍

第一个基于Selenium爬虫的代码,通过调用Firefox浏览器:

[python] view plain copyprint?
  1. #coding=utf-8
  2. importos
  3. importurllib
  4. fromseleniumimportwebdriver
  5. fromselenium.webdriver.common.keysimportKeys
  6. #OpenPhantomJS
  7. #driver=webdriver.PhantomJS(executable_path="phantomjs-1.9.1-windows\phantomjs.exe")
  8. driver=webdriver.Firefox()
  9. #访问url
  10. driver.get("https://www.baidu.com/")
  11. printu'URL:'
  12. printdriver.current_url
  13. #当前链接:https://www.baidu.com/
  14. printu'标题:'
  15. printdriver.title
  16. #标题:百度一下,你就知道
  17. #printdriver.page_source
  18. #源代码
  19. #定位元素,注意u1(数字1)和ul(字母L)区别
  20. printu'\n\n定位元素id:'
  21. info1=driver.find_element_by_id("u1").text
  22. printinfo1
  23. #定位元素
  24. printu'\n\n定位元素xpath:'
  25. info3=driver.find_element_by_xpath("//div[@id='u1']/a")
  26. printinfo3.text
输出如下图所示:



参考:http://blog.csdn.net/eastmount/article/details/52577215


更多相关文章

  1. Django模型选择:使用元组的第一个元素
  2. 详解Python中的from..import绝对导入语句
  3. 返回语句是否应该有括号?
  4. python 按位置关系输出矩阵元素
  5. Python:内联if语句别无效
  6. 使用python如何在列表列表中找到元素,而关键元素是内部列表的元素
  7. 对numpy数组的每n个元素求平均值
  8. 008 Python基本语法元素小结
  9. 【Python】 编码,en/decode函数以及print语句的一些探索

随机推荐

  1. Android项目开发一
  2. android 仿QQ手机版
  3. ConstraintLayout (约束布局)属性详情
  4. android 将图片通过base64转换为String
  5. android:visibility属性
  6. Android虚拟机大屏幕设置(开发平板电脑程
  7. running Android Studio on Windows 7 fa
  8. Android之动画效果编程基础
  9. android studio每次启动都要在fetching A
  10. Android收集崩溃信息的原理