主要內容:html
1. python的安裝python
2. python爬蟲的幾個小例子windows
---------------------------------------------------------------------------------------------------------------------------------------------------python爬蟲
1. python的安裝eclipse
在windows下通常採用jdk+eclipse+python的安裝方式,這裏eclipse的做用仍是個編輯器,寫代碼用的,把python內嵌到eclipse環境下,實如今eclipse下編寫擴展名爲.py的代碼,而後直接調用python程序進行解析。至於jdk,它和eclipse是對好基友,分不開的。安裝時要注意操做系統是32位仍是64位,依此來選擇相應的安裝版本,個人是32位系統,使用的jdk版本是jdk-8u112-windows-i586.exe,eclipse版本是eclipse-jee-neon-1a-win32.zip,python版本爲python-2.7.12.msi,具體安裝方法參見:http://www.cnblogs.com/Realh/archive/2010/10/04/1841907.html。編輯器
2. python爬蟲的幾個小例子函數
(1)實現了http://www.cnblogs.com/Bonker/p/3584707.html中的一個小例子編碼
1 name =raw_input('What is your name?') 2 if name.endswith('tank'): 3 print 'Hello tank' 4 elif name.endswith('xiao'): 5 print 'Hello xiao' 6 else: 7 print 'Hello Strange'
解釋一下,第一行建立name對象,該對象經過python內建函數raw_input,經過讀取控制檯的輸入與用戶實現交互,運行時會在控制檯提示"What is your name?",用戶須要在其後輸入字符信息;url
第2~7行,是一個多分支選擇結構,判斷的依據是name對象的endswith方法,endswith() 方法用於判斷字符串是否以指定後綴結尾,若是以指定後綴結尾返回True,不然返回False,運行結果以下:spa
(2)讀取百度網頁信息的一個小例子
1 #coding:utf-8 2 ''' 3 Created on 2016年12月20日 4 5 @author: Adminstrator 6 ''' 7 import urllib2 8 ''' 9 請求的地址建立一個Request對象, 10 經過調用urlopen並傳入Request對象,將返回一個相關請求response對象, 11 12 ''' 13 req = urllib2.Request('http://www.baidu.com') 14 response = urllib2.urlopen(req) 15 #Response中調用.read() 16 the_page = response.read() 17 18 print the_page
#coding:utf-8 要在py文件裏面寫中文,須要添加這樣一行聲明文件編碼的註釋,不然python2會默認使用ASCII編碼;
第2行和第6行的'''表明這兩行之間的內容爲註釋,第8行和第12行同理。
關於urllib2,這篇博客解釋的很清楚:http://www.360doc.com/content/13/0204/13/3046928_264179264.shtml,程序中也有註釋,調用urlopen函數對請求的url返回一個respons對象,這個respons是一個類file的對象,所以咱們能夠用read()函數來操做這個respons對象。執行效果以下圖所示:
(3)下載百度貼吧中對應頁碼內的全部頁面並存儲爲html文件
1 #coding:utf-8 2 import string, urllib2 3 #定義百度函數 4 def baidu_tieba(url,begin_page,end_page): 5 for i in range(begin_page, end_page+1): 6 sName = string.zfill(i,5) + '.html'#自動填充成五位的文件名 7 print '正在下載第' + str(i) + '個網頁,並將其存儲爲' + sName + '......' 8 f = open(sName,'w+') 9 m = urllib2.urlopen(url + str(i)).read() 10 f.write(m) 11 f.close() 12 13 #-------- 在這裏輸入參數 ------------------ 14 15 # 這個是三亞學院 的百度貼吧中某一個帖子的地址 16 #bdurl = 'http://tieba.baidu.com/p/2296017831?pn=' 17 #http://tieba.baidu.com/f?kw=%C8%FD%D1%C7%D1%A7%D4%BA&fr=ala0&tpl=5 18 #http://tieba.baidu.com/f?kw=%E4%B8%89%E4%BA%9A%E5%AD%A6%E9%99%A2&ie=utf-8 19 #iPostBegin = 1 20 #iPostEnd = 10 21 22 bdurl = str(raw_input(u'請輸入貼吧的地址,去掉pn=後面的數字:\n')) 23 begin_page = int(raw_input(u'請輸入開始的頁數:\n')) 24 end_page = int(raw_input(u'請輸入終點的頁數:\n')) 25 #-------- 在這裏輸入參數 ------------------ 26 27 #調用 28 baidu_tieba(bdurl,begin_page,end_page)
第2行import string就是引入string模塊,使得咱們能夠調用與字符串操做相關的函數。好比後面的zfill和str函數
第5行for in range是循環的意思,示例:
for i in range(1,5):
print i
>>>
1
2
3
4
它是如何工做的:
打印一個數字序列。咱們使用內置的range函數生成這個數字序列。
咱們在這裏所作的是提供兩個數字,range返回一個從第一個數字到第二個數字的一個數字序列。例如,range(1,5)給出序列[1, 2, 3, 4]。默認狀況下,range 步距取爲1。若是咱們提供第三個數字,range那麼它變成了步距。例如range(1,5,2)獲得[1,3]。for循環而後遍歷這個範圍,for i in range(1,5)至關於 for i in [1, 2, 3, 4],這就像把序列中的每個數(或對象)分配給i,一次一個,而後爲每一個i值執行該語句塊。在上面這個示例中,在語句塊中咱們只是打印它的值。
程序段中,第6~11行是循環體裏的語句:第6行string.zfill(i,5),還有另一種寫法str(i).zfill(5),zfill()方法是墊零左側的字符串,以填補寬度,如i的值爲1,填補寬度爲5,則會顯示00001;
第8行f=open(sName,'w+'),以寫入方式打開變量sName存儲的字符串命名的文件,若是該文件不存在,則建立它。
執行效果以下圖所示:
![](http://static.javashuo.com/static/loading.gif)