python-08:理解最簡單的爬蟲程序

爲了方便對照,咱們先給程序加上註釋
python

#!/usr/bin/env python           # 告訴系統應該使用哪一個編譯器來編譯這個文件
# -*- coding: UTF-8 -*-         # 使python程序支持中文編碼格式
__author__ = '217小月月坑'       # 這個程序的做者是誰,注意:先後都是兩個 "_"

import urllib2                  # 導入urllib2 模塊
'''
1. 調用urllib2庫裏面的urlopen函數來請求打開一個網站,傳入一個URL,這個URL就是你想要爬取的網站的網址
2. 執行urlopen函數以後,返回一個response對象,返回信息便保存在這裏面
'''
response = urllib2.urlopen("http://python.jobbole.com/81339/")
print response.read()     # 使用read()方法將response對象的內容打印出來

好了,咱們發現咱們使用到了幾個新的函數,如今來了解一下他們的做用是什麼
服務器

1. 詳解urlopen函數
        urlopen通常接受三個參數,它的參數以下:
            urlopen(url, data, timeout)
                第一個參數url即爲URL,第二個參數data是訪問URL時要傳送的數據,第三個timeout是設置超時時間。
                第二三個參數是能夠不傳送的,data默認爲空None,timeout默認爲 socket._GLOBAL_DEFAULT_TIMEOUT
這個函數將會是咱們前半部分學習的中心點,後面會慢慢講解它的每一個參數的使用
               
2. 詳解read()函數
        read()函數是將response裏面的內容讀取出來,若是不加read()的話,就只是顯示response的描述信息
socket


3. 另外一種更規範的寫法
函數

        urlopen參數能夠傳入一個request請求,它其實就是一個Request類的實例,構造時須要傳入Url,Data等等的內容
        咱們能夠將前面的程序這樣寫:
學習

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

import urllib2
# 先構建一個請求
request = urllib2.Request ("http://python.jobbole.com/81339/")
# 使用urlopen函數請求網頁返回信息
response = urllib2.urlopen(request)
print response.read()

        這個寫法的執行結果跟上一個徹底同樣,可是好處是程序的邏輯更清晰。
        由於在構建請求時還須要加入好多內容,經過構建一個request,服務器響應請求獲得應答,這樣顯得邏輯上清晰明確。
       咱們從此的學習都會使用這個寫法,因此它很重要,儘可能理解,實在理解不了能夠先把它背下

網站

相關文章
相關標籤/搜索