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


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

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

 

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

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

未登錄新浪微博的情況下,是可以通過網址查看一個用戶的首頁的,但是不能進一步查看該用戶的關注和粉絲等信息,如果點擊關注和粉絲,就會重定向回到登錄頁面

比如使用下面函數對某個用戶 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請求

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM