這是全部的調(diào)試過程松靡,我已經(jīng)整理成為筆記腾窝,這里分享給大家:
python爬取豆瓣兩千萬圖書簡介信息:(一)目標API分析
python爬取豆瓣兩千萬圖書簡介信息:(二)簡單python請求urllib2
python爬取豆瓣兩千萬圖書簡介信息:(三)異常處理
python爬取豆瓣兩千萬圖書簡介信息:(四)多進程并發(fā)
python爬取豆瓣兩千萬圖書簡介信息:(五)數(shù)據(jù)庫設計
python爬取豆瓣兩千萬圖書簡介信息:(六)數(shù)據(jù)庫操作類
python爬取豆瓣兩千萬圖書簡介信息:(七)代理IP
python爬取豆瓣兩千萬圖書簡介信息:(八)總結
簡單python請求:urllib2
如何構建一個簡單的pyhton請求,網(wǎng)上一搜一大推炒事。
我這里采用的是 urllib2 作為我的請求庫,原因是 urlib2 作為python的基礎框架,接口成熟迄埃,應用范圍廣等。
下面就是一個簡單的 urllib2 請求:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
url = 'https://api.douban.com/v2/book/1000001'
headers = {"User-Agent": "Mozilla/5.0"}
#headers設置請求的headers兑障,標明是哪種客戶端訪問的服務器侄非,可以不填
req = urllib2.Request(url, headers=headers)
res = urllib2.urlopen(req, timeout=20)
#設置請求蕉汪,并設置請求超時時間為20s
res = res.read()
#通過read()解析response,并將結果轉譯為utf-8編碼
print res
運行結果如圖所示:
這樣,一個簡單的urllib2 發(fā)起的網(wǎng)絡請求就完成了逞怨。
其中需要說明的是者疤,由于某些網(wǎng)站或者API的返回結果,其系統(tǒng)編碼的方式是GB2312 或者 GBK 等叠赦,所以為了編碼方式的統(tǒng)一驹马,而且因為豆瓣API的接口字段有中文,所以此次編碼統(tǒng)一使用UTF8編碼除秀。
python文件編碼設置:
# -*- coding:utf-8 -*-
再就是pyhton系統(tǒng)編碼設置:
import sys
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
因為我的python版本還是2.7糯累,這個地方還是可以用sys.setdefaultencoding() 。然而在Python3.3開始已經(jīng)移除了這個方法.所以具體在使用這個方法的時候鳞仙,還是要深入了解一下具體情況寇蚊,以及用不用sys.setdefaultencoding() 具體發(fā)生了什么事情。