? ? ? ?爬蟲實際上就是通過代碼實現“自動”登陸,并且能夠自動完成一些數據的下載,一般網站都會對一些允許抓取的數據進行規定,具體的規定內容寫在了每個網站的robots文件中。
??????? 爬蟲是數據挖掘和分析的第一部,及:獲取數據,因而對于從事數據分析的人來說,首先應該“了解”。也就是說,對于想要從事數據挖掘的人來說,并不要求你爬蟲的技術非常高超,只要能夠知道里面的基本技術層面即可。個人認為,數據挖掘的要旨并非在于數據(盡管很多數據界的名人都似乎推崇“大數據”),而是在于對于數據后面事件的理解......
??????? 言歸正傳:
? ? ? ? 爬蟲的基本框架是:模擬登陸——獲取數據——存儲數據,當然,每一個步驟中都涉及很多需要注意的地方,如在模擬登陸中,要考慮request的方式和數據內容(這里要了解一些http的基礎知識[w3school](http://www.w3school.com.cn/) 可以經常去看看,如用到xpath的時候),還要驗證碼以及密碼加密(如新浪和拉鉤網)。
??????? 模擬登陸之前,還要掌握一些httpclient/firebug這些軟件的基本操作,以及具備看懂request/post數據的“技能”,這些“攔截”軟件能夠在client(瀏覽器)和server互動時“截獲”雙方信息。ps:所以登陸公共場所的wifi極其危險。
#### 1 靜態網站+密碼可見
??????? 這種情況下,server要求不高,既沒有動態碼,也沒有驗證碼,更沒有加密,因而這類網站的模擬登陸一般非常好實現,只要python中的一些基本操作即可:
* * *
import urllib
import urllib2
url=r"http://www.xxxx.com" # 加入“r“的目的是為了避免一些轉義字符額識別問題,個人編習慣
request=urllib2.Request(url)
rep=urllib2.urlopen(request) #此時的rep為instance,可以理解為類似于“文件”的東西
* * *
??????? 到這里已經將server返回的html文檔記錄在了rep中,后面就可以對rep進行讀寫操作
??????? 這里一定要注意網站的編碼是什么,一般在“查看網站源碼”中,可以看得到有一個為character=“utf-8”的內容,就表示網站html編碼為utf-8,那么用python時,就必須對html進行decode(以utf-8編碼方式轉化為unicode),然后再進行其他處理,如正則表達式查找等。
content=rep.read().decode("utf-8")
with open(r"yourfile.txt","w") as f: #將rep中的html文檔以uft-8的形式進行編碼后存儲
??????? f.write(content.encode("utf-8"))
??????????? 好了,這就是一般網頁的模擬登陸 ????
* * *
#### 2 網站拒絕“機器”登陸
??????? 一般來說,除了像學校網站以及學校bbs這類的網站,其他網站都會對“機器”登陸比較反感,畢竟,那么此時,就需要在以上的基礎上模擬瀏覽器登陸。
??????? 瀏覽器登陸的時候會發送一些我們看不到的內容,想要模擬瀏覽器登陸,就必須將瀏覽器發送的內容以post的形式發送給server端。瀏覽器一般post的內容見下:
* * *

具體參數的意思,如果忘了可以再google一下(查問題一定要用google)
????? 這里要注意的一個定方是accept-encoding那里是:gzip和defualt,也就是說server會以壓縮包的形式法給你html文檔(有的時候也不是,這個還是具體實驗),那么如果是以gzip的形式返回html,那么就一定要“解壓”,否則會寶HTTPError 500,這個異常出來,一般很難發現。具體解壓方法后面介紹。
????? 在模擬瀏覽器登陸的過程中,也沒有必要全部按照post的形式發送,可以只發送一些User-Agent或者referer的東西。發送user-agent是因為有些server要通過這個參數來判斷是否是瀏覽器,發送referer是由于“反盜鏈”的原因,大概意思就是防止本網站的鏈接內容被其他“二道販子”用來“倒賣”。
那么,在上面代碼的基礎上,這里可以加入:
headers={"User-Agent":"xxx","Referer":"xxx"}
request改為:
request=urllib2.Request(url,headers=headers)#在發送請求的時候加入header
這里附上urllib2的中文教程:[urllib2 tutorial](http://uliweb.clkg.org/tutorial/view_chapter/172) ?
PS:如果可以用Request庫的還是用它吧? [request tutorial?](http://docs.python-requests.org/en/latest/user/quickstart/)
- Python爬蟲入門
- (1):綜述
- (2):爬蟲基礎了解
- (3):Urllib庫的基本使用
- (4):Urllib庫的高級用法
- (5):URLError異常處理
- (6):Cookie的使用
- (7):正則表達式
- (8):Beautiful Soup的用法
- Python爬蟲進階
- Python爬蟲進階一之爬蟲框架概述
- Python爬蟲進階二之PySpider框架安裝配置
- Python爬蟲進階三之Scrapy框架安裝配置
- Python爬蟲進階四之PySpider的用法
- Python爬蟲實戰
- Python爬蟲實戰(1):爬取糗事百科段子
- Python爬蟲實戰(2):百度貼吧帖子
- Python爬蟲實戰(3):計算大學本學期績點
- Python爬蟲實戰(4):模擬登錄淘寶并獲取所有訂單
- Python爬蟲實戰(5):抓取淘寶MM照片
- Python爬蟲實戰(6):抓取愛問知識人問題并保存至數據庫
- Python爬蟲利器
- Python爬蟲文章
- Python爬蟲(一)--豆瓣電影抓站小結(成功抓取Top100電影)
- Python爬蟲(二)--Coursera抓站小結
- Python爬蟲(三)-Socket網絡編程
- Python爬蟲(四)--多線程
- Python爬蟲(五)--多線程續(Queue)
- Python爬蟲(六)--Scrapy框架學習
- Python爬蟲(七)--Scrapy模擬登錄
- Python筆記
- python 知乎爬蟲
- Python 爬蟲之——模擬登陸
- python的urllib2 模塊解析
- 蜘蛛項目要用的數據庫操作
- gzip 壓縮格式的網站處理方法
- 通過瀏覽器的調試得出 headers轉換成字典
- Python登錄到weibo.com
- weibo v1.4.5 支持 RSA協議(模擬微博登錄)
- 搭建Scrapy爬蟲的開發環境
- 知乎精華回答的非專業大數據統計
- 基于PySpider的weibo.cn爬蟲
- Python-實現批量抓取妹子圖片
- Python庫
- python數據庫-mysql
- 圖片處理庫PIL
- Mac OS X安裝 Scrapy、PIL、BeautifulSoup
- 正則表達式 re模塊
- 郵件正則
- 正則匹配,但過濾某些字符串
- dict使用方法和快捷查找
- httplib2 庫的使用