之前也百度了一下如何獲取新浪微博cookie,附上其中出現頻率最高的教程的網址 https://www.douban.com/note/264976536/?start=0#32893498
自己按照上面的步驟試了一下,然后發現找不到weibo.com,然后就試了一下其他用移動端微博就可以 www.weibo.cn
首先也是用chrome瀏覽器打開,F12打開(我的鍵盤好像沒有轉換,所以要用Fn+F12),或者右鍵->檢查
其他。。如圖吧,找到然后復制cookie那一長串
為了驗證,我順帶試了一下這個將Cookie作為訪問微博的header參數提交的例子https://gist.github.com/ghostrong/d10c061000b7b65e5039
附上源代碼
#coding=gbk """ Simulate a user login to Sina Weibo with cookie. You can use this method to visit any page that requires login. """ import urllib2 import re cookie = ‘your cookie' # get your cookie from Chrome or Firefox headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0', 'cookie': cookie } def visit(): url = 'http://weibo.com' req = urllib2.Request(url, headers=headers) text = urllib2.urlopen(req).read() # print the title, check if you login to weibo sucessfully pat_title = re.compile('<title>(.+?)</title>') r = pat_title.search(text) if r: print r.group(1).decode("utf-8") if __name__ == '__main__': visit()
原來的代碼第一行的編碼定義是 #coding=utf-8
但是我在運行的時候就一直出現輸出亂碼的問題,然后就又查了一下資料,附上鏈接 http://www.cnblogs.com/FlyCat/archive/2013/04/06/3002885.html
亂碼產生的原因是Python在讀取時默認解碼方式是用操作系統編碼,如果和保存時的編碼方式不一樣,就會出現亂碼
比如以下片段,文件保存格式是utf-8
#coding=utf-8 print '是' #輸出亂碼
因為windows默認的編碼方式是GBK,python文件保存時使用了utf-8,在讀取時,python使用GBK的編碼表去解utf-8編碼的字節碼,因為GBK與UTF-8編碼不兼容,自然出現了亂碼問題
解決方法:
1.直接使用 u'是' 形式,指明以unicode編碼,解碼方式會以頂部 #coding定義的編碼方式,如果不寫,以操作系統當前編碼方法,建議寫上#coding,因為要讓操作系統編碼和源文件編碼經常會不一樣。推薦使用這種方式
2.輸出時指定解碼方法 print '是'.decode("utf8") ,必須和保存的編碼一致,忽略#coding的定義
3.將#coding 和保存編碼改為和操作系統一樣的編碼,就可以直接print '是' 正常輸出,也不推薦,因為需要事先知道操作系統編碼,復制到其他電腦上,操作系統編碼不一樣就會出錯
#coding=gbk print u'是' #方法1 print '是'.decode("gbk") #方法2 print '是' #方法3