全棧 - 8 爬蟲 使用 urllib2 獲取數據

這是全棧數據工程師養成攻略系列教程的第八期:8 爬蟲 使用urllib2獲取數據。javascript

咱們知道,Http請求主要有GET和POST兩種。對於一個url,既可使用瀏覽器去訪問,也可使用代碼去請求。css

Urllib2

咱們主要使用的是Python2.7中的urllib2,官方文檔在這裏:docs.python.org/2/library/u…。若是閒官方文檔太長太囉嗦,就跟着我一塊兒操做吧~html

GET請求

kaoshi.edu.sina.com.cn/college/sco… 爲例,咱們來實踐下,如何發起GET請求,主要代碼以下,所返回的 result 中即包含了網頁的內容。java

# 導入須要的庫
import urllib2
import urllib

# 定義一個字符串變量,保存要訪問的連接
url = 'http://kaoshi.edu.sina.com.cn/college/scorelist?tab=batch&wl=1&local=2&batch=&syear=2013'
# 發起請求
request = urllib2.Request(url=url)
# 打開鏈接
response = urllib2.urlopen(request, timeout=20)
# 讀取返回內容
result = response.read()複製代碼

POST請求

shuju.wdzj.com/plat-info-t… 爲例,咱們來實踐下,如何發起POST請求,主要代碼以下,所返回的 result 中即包含了請求的數據。python

# 導入須要的庫
import urllib2
import urllib

# 定義一個字符串變量,保存要訪問的連接
url = 'http://shuju.wdzj.com/plat-info-target.html'

# 將參數進行編碼,以字典形式組織參數
data = urllib.urlencode({
    'target1': 19, 
    'target2': 20, 
    'type': 1, 
    'wdzjPlatId': 59
    })
# 發起請求
request = urllib2.Request(url)
# 創建一個opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
# 打開鏈接
response = opener.open(request, data)
# 讀取返回內容
result = response.read()複製代碼

處理返回結果

url主要有Html和API兩類,前者以字符串形式返回經渲染後的複雜頁面,後者一樣以字符串形式返回json格式數據,所以咱們須要對讀取的 result 採起不一樣的處理方法。json

Html

當返回結果是Html頁面的文本內容時,須要藉助一些工具進行解析,將純文本轉爲結構化的Html對象。最經常使用的工具是 BeautifulSoup,它也是一個Python中的一個包,提供瞭解析Html文本、查找和選擇Html元素、提取元素內容和屬性等功能。考慮到BeautifulSoup的使用涉及到html和css等內容,咱們先跳過這一塊,等後面介紹了相關基礎再回過頭來說解。api

API

當返回結果是json格式的字符串時,可使用Python中的 json 模塊,方便地將json字符串加載爲Python中的字典,再進行後續處理。瀏覽器

import json
# result是剛纔讀取的返回結果,是一個json格式的字符串
result = json.loads(result)
# result如今是一個字典了
print type(result)複製代碼

視頻連接:使用urllib2獲取數據less

若是以爲文章不錯,不妨點一下左下方的喜歡~

相關文章
相關標籤/搜索