日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python 登錄網站詳解及實例

系統 1690 0

Python 登錄網站詳解及實例

對于大部分論壇,我們想要抓取其中的帖子分析,首先需要登錄,否則無法查看。

  這是因為 HTTP 協議是一個無狀態(Stateless)的協議,服務器如何知道當前請求連接的用戶是否已經登錄了呢?有兩種方式:

  1. 在URI 中顯式地使用 Session ID;
  2. 利用 Cookie,大概過程是登錄一個網站后會在本地保留一個 Cookie,當繼續瀏覽這個網站的時候,瀏覽器會把 Cookie 連同地址請求一起發送過去。

  Python 提供了相當豐富的模塊,所以對于這種網絡操作只要幾句話就可以完成。我以登錄 QZZN 論壇為例,事實上下面的程序幾乎所有的 PHPWind 類型的論壇都是適用的。

            
# -*- coding: GB2312 -*-

from urllib import urlencode
import cookielib, urllib2

# cookie
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

# Login
user_data = {'pwuser': '你的用戶名',
       'pwpwd': '你的密碼',
       'step':'2'
      }
url_data = urlencode(user_data)
login_r = opener.open("http://bbs.qzzn.com/login.php", url_data)


          

 一些注釋:

  • urllib2 顯然是比 urllib 高級一點的模塊,里面包括了如何使用 Cookies。
  • 在 urllib2 中,每個客戶端可以用一個 opener 來抽象,每個 opener 又可以增加多個 handler 來增強其功能。
  • 在構造 opener 時指定了 HTTPCookieProcessor 做為 handler,因此這個 handler 支持 Cookie。
  • 使用 isntall_opener 后,調用 urlopen 時會使用這個 opener。
  • 如果不需要保存 Cookie,cj 這個參數可以省略。
  • user_data 存放的就是登錄所需要的信息,在登錄論壇的時候把這個信息傳遞過去就行了。
  • urlencode 功能是把字典 user_data 編碼成"?pwuser=username&pwpwd=password"的形式,這樣做是為了使程序易讀一些。

  最后一個問題是,pwuser、pwpwd 這類的名字是從哪兒來的,這就要分析需要登錄的網頁了。我們知道,一般的登錄界面都是一個表單,節選如下:

            
... 用戶名 UID 馬上注冊 密 碼 找回密碼 ...

  從這里可以看出,我們需要輸入的用戶名密碼對應的就是 pwuser 和 pwpwd,而 step 對應的則是登錄(這個是嘗試出來的)。

  注意到,這個論壇表單采用的是 post 方式,如果是 get 方式則本文的方法就需要變動一下,不能直接 open,而是應該首先 Request,然后再 open。更詳細的請看手冊...

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 敖汉旗| 龙州县| 明水县| 红桥区| 蓝山县| 彰化市| 朝阳市| 镇安县| 潢川县| 伊春市| 宜兰市| 甘孜| 宜丰县| 深泽县| 洛隆县| 阳信县| 麻江县| 武城县| 湘潭县| 彭水| 淮安市| 揭东县| 阿克陶县| 东阳市| 横峰县| 康定县| 什邡市| 革吉县| 安西县| 甘孜| 定结县| 湘乡市| 日照市| 成安县| 通榆县| 柳河县| 邯郸市| 商城县| 四子王旗| 和硕县| 渝北区|