Python爬蟲學習——使用Cookie登陸新浪微博

1.首先在瀏覽器中進入WAP版微博的網址,由於手機版微博的內容較爲簡潔,方便後續使用正則表達式或者beautifulSoup等工具對所須要內容進行過濾html

https://login.weibo.cn/login/

 

2.人工輸入帳號、密碼、驗證字符,最後最重要的是勾選(記住登陸狀態)python

 3.使用Wireshark工具或者火狐的HttpFox插件對GET請求進行分析,須要是取得GET請求中的Cookie信息正則表達式

未登陸新浪微博的狀況下,是能夠經過網址查看一個用戶的首頁的,可是不能進一步查看該用戶的關注和粉絲等信息,若是點擊關注和粉絲,就會重定向回到登陸頁面api

好比使用下面函數對某個用戶 http://weibo.cn/XXXXXX/fans 的粉絲信息進行訪問,會重定向回登陸頁面瀏覽器

#獲取網頁函數
def getHtml(url,user_agent="wswp",num_retries=2):       #下載網頁,若是下載失敗從新下載兩次
	print '開始下載網頁:',url
	#	headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0'}
	headers = {"User-agent":user_agent}
	request = urllib2.Request(url,headers=headers)		#request請求包
	try:
		html = urllib2.urlopen(request).read()          #GET請求
	except urllib2.URLError as e:
		print "下載失敗:",e.reason
		html = None
		if num_retries > 0:
			if hasattr(e,'code') and 500 <= e.code < 600:
				return getHtml(url,num_retries-1)
	return html

因此須要在請求的包中的headers中加入Cookie信息,函數

在勾選了記住登陸狀態以後,點擊關注或者粉絲按鈕,發出GET請求,並使用wireshark對這個GET請求進行抓包工具

能夠抓到這個GET請求url

右鍵Follow TCP Stream,圖片中打碼的部分就Cookie信息spa

4.加入Cookie信息,從新獲取網頁插件

有了Cookie信息,就能夠對Header信息就行修改

#獲取網頁函數
def getHtml(url,user_agent="wswp",num_retries=2):       #下載網頁,若是下載失敗從新下載兩次
	print '開始下載網頁:',url
	#	headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0'}
	headers = {"User-agent":user_agent,"Cookie":"_T_WM=XXXXXXXX; SUB=XXXXXXXX; gsid_CTandWM=XXXXXXXXX"}
	request = urllib2.Request(url,headers=headers)		#request請求包
	try:
		html = urllib2.urlopen(request).read()          #GET請求
	except urllib2.URLError as e:
		print "下載失敗:",e.reason
		html = None
		if num_retries > 0:
			if hasattr(e,'code') and 500 <= e.code < 600:
				return getHtml(url,num_retries-1)
	return html

 

import urllib2  

if __name__ == '__main__':
	URL = 'http://weibo.cn/XXXXXX/fans'			#URL替代
	html = getHtml(URL)
	print html

 成功訪問到某個用戶的粉絲信息

試一試訪問一下最近一年很火的papi醬的微博她的我的信息頁面

import urllib2 

if __name__ == '__main__':
	URL = 'http://weibo.cn/2714280233/info'			#URL替代
	html = getHtml(URL)
	print html

相關文章
相關標籤/搜索