安装Python及爬虫入门介绍 - Go语言中文社区

安装Python及爬虫入门介绍



一.安装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文件里添加代码如下:
  1. def fun1():    
  2.     print 'Hello world'    
  3.     print 'by eastmount csdn'      
  4. print 'output'    
  5. fun1()      
  6. def fun2(val1,val2):    
  7.     print val1    
  8.     print val2      
  9. fun2(8,15)    
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,输出结果如下图所示。


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

  1. #双分支if-else  
  2. count = input("please input:")  
  3. print 'count=',count  
  4. if count>80:  
  5.     print 'lager than 80'  
  6. else:  
  7.     print 'lower than 80'  
  8. print 'End if-else'  
  9.   
  10. #多分支if-elif-else  
  11. number = input("please input:")  
  12. print 'number=',number  
  13. if number>=90:  
  14.     print 'A'  
  15. elif number>=80:  
  16.     print 'B'  
  17. elif number>=70:  
  18.     print 'C'  
  19. elif number>=60:  
  20.     print 'D'  
  21. else:  
  22.     print 'No pass'  
  23. print 'End if-elif-else'  
  24.   
  25. #条件判断  
  26. sex = raw_input("plz input your sex:")  
  27. if sex=='male' or sex=='m' or sex=='man':  
  28.     print 'Man'  
  29. else:  
  30.     print 'Woman'  
#双分支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'

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

        其中判断条件语句condition可以为布尔表达式、关系表达式和逻辑表达式,else可以省略(此处列出为与C语言等区别)。举个例子:
  1. #循环while计数1+2+..+100  
  2. i = 1  
  3. s = 0  
  4. while i <= 100:  
  5.     s = s+i  
  6.     i = i+1  
  7. else:  
  8.     print 'exit while'  
  9. print 'sum = ',s  
  10.   
  11. ''''' 
  12. 输出结果为:exit while 
  13.           sum = 5050 
  14. '''  
#循环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跳出循环。
        下面是文件循环遍历的过程:

  1. #文件循环遍历三种对比    
  2. for n in open('for.py''r').read():    
  3.     print n,    
  4. print 'End'    
  5. for n in open('for.py''r').readlines():    
  6.     print n,    
  7. print 'End'      
  8. for n in open('for.py''r').readline():    
  9.     print n,    
  10. print 'End'    
#文件循环遍历三种对比  
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'  

        5、课堂讲解代码
        这是我课堂讲解的代码,仅供大家参考:
  1. #coding=utf-8   
  2. import os  
  3. import string  
  4.   
  5. print '贵州财经大学大数据金融学院,大家好!'  
  6.   
  7. def fun1():  
  8.     print 'Hello world'  
  9.     print 'Goodbye!'  
  10.   
  11. #计算和  
  12. def fun2(n, m):  
  13.     return n+m  
  14.   
  15. #输出结果  
  16. fun1()  
  17. s = fun2(3,8)  
  18. print 'sum = ' + str(s)  
  19. print 'sum =', s  
  20.   
  21. #判断语句 u表示unicode字符串  
  22. if(s>10):  
  23.     print u'大于10'  
  24. else:  
  25.     print u'小于等于10'  
  26.   
  27. #循环语句  
  28. i = 1  
  29. s = 0  
  30. while i<=100:  
  31.     s = s + i  
  32.     i = i + 1  
  33. else:  
  34.     print 'end while'  
  35. print 'sum =', s  
  36. ''''' 
  37. 输出结果为:sum=5050 
  38. '''  
  39.   
  40. #for循环  
  41. num = [246810]  
  42. for x in num:  
  43.     print x  
#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
        输出结果如下图所示:


二. 安装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。常见的具体用法如下:
  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.     
  8. pip的用法    
  9. 1) 安装一个包    
  10.  $ pip install <package_name>    
  11.  $ pip install <package_name>==<version>    
  12. 2) 升级一个包 (如果不提供version号,升级到最新版本)    
  13.  $ pip install --upgrade <package_name>>=<version>    
  14. 3)删除一个包    
  15.  $ pip uninstall <package_name>    
easy_install的用法:  
1) 安装一个包  
 $ easy_install <package_name>  
 $ easy_install "<package_name>==<version>"  
2) 升级一个包  
 $ easy_install -U "<package_name>>=<version>"  
  
pip的用法  
1) 安装一个包  
 $ pip install <package_name>  
 $ pip install <package_name>==<version>  
2) 升级一个包 (如果不提供version号,升级到最新版本)  
 $ pip install --upgrade <package_name>>=<version>  
3)删除一个包  
 $ pip uninstall <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安装目录下添加pythonScripts目录,即在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后,下面这段代码是下载网页。

  1. #coding=utf-8  
  2. import os  
  3. import urllib  
  4. import httplib2  
  5. import webbrowser as web  
  6.   
  7. #爬取在线网站  
  8. url = "http://www.baidu.com/"    
  9. content = urllib.urlopen(url).read()    
  10. open("baidu.html","w").write(content)  
  11. #浏览求打开网站  
  12. web.open_new_tab("baidu.html")    
#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一般接受三个参数,它的参数如下:
  1. urlopen(url, data, timeout)  
urlopen(url, data, timeout)
        第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
        第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT。
        第一个参数URL是必须要传送的,在这个例子里面我们传送了百度的URL,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。

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


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


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

  1. #coding=utf-8  
  2. import os  
  3. import urllib  
  4. import httplib2  
  5. import webbrowser as web  
  6.   
  7. #爬取在线网站  
  8. url = "http://www.baidu.com/"    
  9. content = urllib.urlopen(url).read()    
  10. open("baidu.html","w").write(content)  
  11. #浏览求打开网站  
  12. web.open_new_tab("baidu.html")    
  13.   
  14. #下载图片 审查元素  
  15. pic_url = "https://www.baidu.com/img/bd_logo1.png"  
  16. pic_name = os.path.basename(pic_url)  #删除路径获取图片名字     
  17. urllib.urlretrieve(pic_url, pic_name)  
  18.   
  19.   
  20. #本地文件  
  21. content = urllib.urlopen("first.html").read()    
  22. print content  
  23.   
  24. #下载图片 审查元素  
  25. pic_url = "imgs/bga1.jpg"  
  26. pic_name = os.path.basename(pic_url)  #删除路径获取图片名字     
  27. urllib.urlretrieve(pic_url, pic_name)  
#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)

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

  1. import urllib  
  2. def callbackfunc(blocknum, blocksize, totalsize):  
  3.     '''''回调函数 
  4.     @blocknum: 已经下载的数据块 
  5.     @blocksize: 数据块的大小 
  6.     @totalsize: 远程文件的大小 
  7.     '''  
  8.     percent = 100.0 * blocknum * blocksize / totalsize  
  9.     if percent > 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)  
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网页基础知识及审查元素

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


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


        HTML DOM 定义了访问和操作HTML文档的标准方法。 HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。它们都是一个节点(Node),就像公司的组织结构图一样。 我们现在从另一个角度来审视源代码,first.html的源码如下:
  1. <html>    
  2.   <head>       
  3.     <title>Python挖掘开发</title>    
  4.   </head>    
  5.       
  6.   <body>    
  7.     欢迎大家学习《基于Python的Web大数据爬取实战指南》! <br>    
  8.   </body>    
  9. </html>  
<html>  
  <head>     
    <title>Python挖掘开发</title>  
  </head>  
    
  <body>  
    欢迎大家学习《基于Python的Web大数据爬取实战指南》! <br>  
  </body>  
</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及网页简单爬取

   

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/believe646875970/article/details/53422513
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢