"怎麼判斷模擬登錄是否成功"php
我最開始的時候也問過這個問題,當時對全部流程都還不熟悉,並且寫的代碼沒一個能成功的,就給本身提了一大堆的問題,也在論壇上發表提問,在這個過程當中,我遇到了不少的狀況,好多都能做爲判斷的依據,這裏跟你們分享一下python
代碼不報錯可是徹底沒有輸出的,這是沒得懷疑的了,有多是你代碼中的邏輯錯誤或者網址輸錯或者根本不能訪問網站等等,這些是隱式的錯誤,而像語法錯誤,關鍵詞拼寫錯誤等等這些程序一運行就會報錯的,我把他們叫作顯式錯誤
cookie
代碼運行出現URLError或者是HTTPError的,有多是函數使用不對或者是網絡緣由或者是網站限制,反正連輸出都看不到的確定想都不用想了網絡
有輸出結果,並且是網頁源碼,這至少證實了你的程序是沒有錯的,可是有源碼並不意味着是登錄成功以後的網頁的源碼,因此你須要對比登錄前的源碼和登錄後的源碼有什麼區別函數
登錄後網頁上通常會顯示你的用戶名,我的信息,或者退出的選項,或者其餘的操做標誌等等,這些通常都能在網頁源碼中找到,因此要先手動登錄,對比登錄前和登錄後的界面有什麼區別,而後在爬取到的源碼中按這些關鍵字搜索網站
如今咱們從兩個方面來判斷咱們是否已經登錄成功了ui
首先,先下載網頁源碼,程序已經很熟悉了
url
#!/usr/bin/env python # -*- coding: UTF-8 -*- __author__ = '217小月月坑' import urllib2 url = 'http://www.lvye.org/userinfo.php?uid=409557' user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0' headers = {'User-Agent':user_agent} request = urllib2.Request(url,headers=headers) response = urllib2.urlopen(request) print response.read()
這個代碼中沒有使用cookies或者是其餘操做,因此爬取的網頁是未登錄的網頁。源碼很長,這裏就不貼出來了,大家能夠本身去對比,登錄後的網頁中有"退出"的字樣,咱們如今爬取的網頁應該會有"登錄","用戶註冊"等等這些字樣spa
2. 對比登錄先後的兩個界面code
仍是那個網址:http://www.lvye.org/userinfo.php?uid=409557
至於這個網址我要在這裏說一下,最後面的uid=409557 應該是身份的ID標識,或者說是一個序號,是這個網站管理者給每個註冊的用戶的惟一標識,因此前面叫你們先註冊也是這個緣由,使用個人這個網址應該是登錄不上的,在編寫代碼的時候,也須要把headers,cookies等等換成你本身的,要否則是登錄不上的
這是登錄前的界面
這是登錄後的界面
你們應該看到網頁的左上角和電子郵件這一欄的信息在登錄先後是不同的,而這些信息必定會在網頁源碼中找到,如今咱們來截取源碼中的一些片斷
這是登錄前的
這是登錄後的
因此如何判斷是否登陸成功最主要的是對比登陸先後網頁的變化,這些變化必定會在源碼中表現出來,咱們只要在獲取的源碼中找到關鍵的信息就好了