1. 安裝IDE以及hello world
一個(gè)優(yōu)秀的IDE可以極大地提高工作效率,在這里我選擇使用JetBrains公司的PyCharm。是不是有些眼熟?沒(méi)錯(cuò),IDEA 和Android Studio就是他們做的,JetBrains出品,必屬精品。
點(diǎn)擊download選擇相應(yīng)平臺(tái)及版本,我這里選擇的是社區(qū)版。
安裝過(guò)程,切換主題,調(diào)整字體之類的都跟跟IDEA類似,不需贅述。
那么開(kāi)始我們的hello world程序吧。
新建一個(gè)Python file ,然后寫(xiě)入
print ("hello world")
第一次運(yùn)行在工作區(qū)右擊 run即可
之后就會(huì)在Toolbar上顯示run按鈕了
很棒有木有
2.1 先爬他一個(gè)網(wǎng)頁(yè)下來(lái)
敲入如下代碼
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
點(diǎn)擊運(yùn)行,我們可以得到結(jié)果
這個(gè)網(wǎng)頁(yè)的源碼被我們爬下來(lái)了,是不是很簡(jiǎn)單!
2.2 分析代碼
下面我們來(lái)分析下這段代碼
import urllib2
urllib2庫(kù)是學(xué)習(xí)Python爬蟲(chóng)最基本的模塊,利用這個(gè)模塊我們可以得到網(wǎng)頁(yè)的內(nèi)容,并對(duì)內(nèi)容用正則表達(dá)式提取分析,得到我們想要的結(jié)果
response = urllib2.urlopen("http://www.baidu.com")
首先我們調(diào)用的是urllib2庫(kù)里面的urlopen方法,傳入一個(gè)URL,這個(gè)網(wǎng)址是百度首頁(yè),協(xié)議是HTTP協(xié)議,urlopen一般接受三個(gè)參數(shù),它的參數(shù)如下:
第一個(gè)參數(shù)url即為URL,第二個(gè)參數(shù)data是訪問(wèn)URL時(shí)要傳送的數(shù)據(jù),第三個(gè)timeout是設(shè)置超時(shí)時(shí)間。
第二三個(gè)參數(shù)是可以不傳送的,data默認(rèn)為空None,timeout默認(rèn)為 socket._GLOBAL_DEFAULT_TIMEOUT
第一個(gè)參數(shù)URL是必須要傳送的,在這個(gè)例子里面我們傳送了百度的URL,執(zhí)行urlopen方法之后,返回一個(gè)response對(duì)象,返回信息便保存在這里面。
print response.read()
response對(duì)象有一個(gè)read方法,可以返回獲取到的網(wǎng)頁(yè)內(nèi)容
2.3 構(gòu)造Request
上面的urlopen參數(shù)可以傳入一個(gè)request請(qǐng)求,它其實(shí)就是一個(gè)Request類的實(shí)例,構(gòu)造時(shí)需要傳入U(xiǎn)rl,Data等等的內(nèi)容。我們可以將上面的代碼改寫(xiě)為
import urllib2
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
運(yùn)行結(jié)果是完全一樣的,只不過(guò)中間多了一個(gè)request對(duì)象,推薦大家這么寫(xiě),因?yàn)樵跇?gòu)建請(qǐng)求時(shí)還需要加入好多內(nèi)容,通過(guò)構(gòu)建一個(gè)request,服務(wù)器響應(yīng)請(qǐng)求得到應(yīng)答,這樣顯得邏輯上清晰明確。