亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python爬蟲之模擬登陸csdn的實例代碼

 更新時間:2018年05月18日 08:45:24   作者:man8er  
今天小編就為大家分享一篇python爬蟲之模擬登陸csdn的實例代碼,具有很好的參考價值希望對大家有所幫助。一起跟隨小編過來看看吧

python模擬登陸網頁主要使用到urllib、urllib2、cookielib及BeautifulSoup等基本模塊,當然進階階段我們還可以使用像requests等更高級一點的模塊。其中BeautifulSoup模塊在匹配html方面,可以很好的代替re,使用起來更方便,對于不會使用正則的人來說是福音。

本文使用python2.7

原理

模擬登陸前,我們需要先知道csdn是如何登陸的。我們通過google chrome瀏覽器先來分析下:

1.chrome瀏覽器用F12或ctrl+shift+I啟動開發(fā)者工具,并訪問csdn登陸頁面,在開發(fā)者工具中對”Preserver log”選項打勾,表示跳轉時不清楚之前的訪問記錄。

2.輸入用戶名密碼后,網頁進行跳轉,此時我們查看訪問記錄中Method為POST的鏈接的headers,可以看到

Request header:

Cache-Control:no-cache
Cache-Control:no-store
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html;charset=UTF-8
Date:Fri, 05 Aug 2016 03:51:56 GMT
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Keep-Alive:timeout=20
Pragma:no-cache
Server:openresty
Set-Cookie:UD=%E4%BB%8A%E5%A4%A9%E4%B8%8D%E8%B5%B0%EF%BC%8C%E6%98%8E%E5%A4%A9%E5%8D%B3%E4%BD%BF%E8%B7%91%E4%B9%9F%E4%B8%8D%E4%B8%80%E5%AE%9A%E8%B7%9F%E5%BE%97%E4%B8%8A%EF%BC%81; Domain=.csdn.net; Path=/
Set-Cookie:UserName=yanggd1987; Domain=.csdn.net; Path=/
Set-Cookie:UserInfo=RjXwn4OfICh68ZVTzEjJxlcez5O%2B8RMsVvAiTV6uo4n4q1orcuBFZz29qx%2BUZ7JPFQQivvFGwFaC97NpT%2FKhtcZ2U%2B%2BzivoNtu5nTyg717xzimpeHcoutwnMg%2F5S8ZlARzA8H48TOftvUJUB0mxylQ%3D%3D; Domain=.csdn.net; Path=/
Set-Cookie:UserNick=man8er; Domain=.csdn.net; Path=/
Set-Cookie:AU=A3E; Domain=.csdn.net; Path=/
Set-Cookie:CASTGC=TGT-63516-e4e600adR5WiJAFintPeHqNCpGRvO9w7nHBYtY5XUCc2BPCCcG-passport.csdn.net; Path=/; Secure
Set-Cookie:UN=yanggd1987; Domain=.csdn.net; Expires=Sat, 05-Aug-2017 03:51:55 GMT; Path=/
Set-Cookie:UE="yanggd1987@163.com"; Version=1; Domain=.csdn.net; Max-Age=31536000; Expires=Sat, 05-Aug-2017 03:51:55 GMT; Path=/
Set-Cookie:BT=1470369115868; Domain=.csdn.net; Expires=Sat, 05-Aug-2017 03:51:55 GMT; Path=/
Set-Cookie:access-token=0bd99cf6-c5bf-4683-89b8-9d8678bebff9; Domain=.csdn.net; Path=/
Transfer-Encoding:chunked
Vary:Accept-Encoding

有以上可以看出登陸過程中有cookie

POST提交的數據:

username:XXXXXXXXX
password:XXXXXXXXX
lt:LT-52961-eMo02Bz4tlj3wQz4QMuO173GCIdsqE
execution:e15s1
_eventId:submit

其中username和password表示我們登陸的賬戶和密碼,那lt、execution表示什么呢?不要急,我們看看登陸頁面網站的源代碼:

<form id="fm1" action="/account/login?from=http%3A%2F%2Fmy.csdn.net%2Fmy%2Fmycsdn" method="post">
   <input id="password" name="password" tabindex="2" placeholder="輸入密碼" class="pass-word" type="password" value="" autocomplete="off">
   <div class="row forget-password">
   <span class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
    <input type="checkbox" name="rememberMe" id="rememberMe" value="true" class="auto-login" tabindex="4">
    <label for="rememberMe">下次自動登錄</label>
   </span>
   <span class="col-xs-6 col-sm-6 col-md-6 col-lg-6 forget tracking-ad" data-mod="popu_26">
    <a href="/account/fpwd?action=forgotpassword&amp;service=http%3A%2F%2Fmy.csdn.net%2Fmy%2Fmycsdn" rel="external nofollow" tabindex="5" target="_blank">忘記密碼</a>
   </span>
   </div>
   <!-- 該參數可以理解成每個需要登錄的用戶都有一個流水號。只有有了webflow發(fā)放的有效的流水號,用戶才可以說明是已經進入了webflow流程。否則,沒有流水號的情況下,webflow會認為用戶還沒有進入webflow流程,從而會重新進入一次webflow流程,從而會重新出現登錄界面。 -->
   <input type="hidden" name="lt" value="LT-53452-VLvC2gjfxdj4jheoUJQRkIXgoDZfc3">
   <input type="hidden" name="execution" value="e16s1"> 
   <input id="username" name="username" tabindex="1" placeholder="輸入用戶名/郵箱/手機號" value="用戶名" class="user-name" type="text"><input type="hidden" name="_eventId" value="submit"> 
   <input class="logging" accesskey="l" value="登 錄" tabindex="6" type="button">   
</form>

上面注釋的內容就是說明參數lt和execution的,就是在登陸過程中webflow會動態(tài)分配一個流水號LT-53452-VLvC2gjfxdj4jheoUJQRkIXgoDZfc3,我們只用獲取到這個流水號才能夠進行登陸。

從上面通過chrome分析得到,登陸csdn必須有cookie并且獲取到webflow分配的流水號;;并且訪問時必須有user-agent,否則客戶端會被屏蔽。

實現

1.由于我們的系統是centos6.5,默認使用python2.6,因此我們需要先安裝python2.7并安裝相關第三方模塊

(1)yum安裝

rpm -Uvh https://centos6.iuscommunity.org/ius-release.rpm
yum -y install python27 python27-devel python27-pip python27-setuptools

#安裝相關第三方模塊

pip2.7 install beautifulsoup4
pip2.7 install lxml

(2)編譯安裝

安裝python.2.7

wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
tar -zxvf Python-2.7.12.tgz
cd Python-2.7.12
./configure --prefix=/usr/local/python2.7
make && make install
#環(huán)境變量
vim /etc/profile
export PATH=/usr/local/python2.7/bin:$PATH
source /etc/profile
#安裝setuptools
wget https://pypi.python.org/packages/46/db/baa571da945ff731f3739a119574e89b12add9b05c03842103bd641d0990/setuptools-25.1.3.tar.gz#md5=0dcb9990901cb6e9631db195d4e775a7
tar -zxvf setuptools-25.1.3.tar.gz
cd setuptools-25.1.3
python2.7 setup.py install
#安裝pip
wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a
tar -zxvf pip-8.1.2.tar.gz
cd pip-8.1.2
python2.7 setup.py install
#安裝相關第三方模塊
pip2.7 install beautifulsoup4
pip2.7 install lxml

注意: 通過編譯安裝的pip2.7 安裝lxml會報錯,因此還是建議使用yum安裝的pip2.7

2.代碼實現

vim csdn_login.py
#!/usr/bin/env python2.7
#-*- coding: utf-8 -*-

import urllib
import urllib2
import cookielib
from bs4 import BeautifulSoup

filename = 'cookie_csdn.txt'
#聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2庫的HTTPCookieProcessor對象來創(chuàng)建cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通過handler來構建opener
opener = urllib2.build_opener(handler)

loginurl = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"

#登陸前準備:獲取lt和exection
response = opener.open(loginurl)
soup = BeautifulSoup(response.read(), "lxml")
for input in soup.form.find_all("input"):
 if input.get("name") == "lt":
 lt = input.get("value")
 if input.get("name") == "execution":
 execution = input.get("value")
#post信息
values = {
 "username":"用戶名",
 "password":"密碼",
 "lt":lt,
 "execution":execution,
 "_eventId":"submit"
 }
postdata = urllib.urlencode(values)

opener.addheaders = [("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36")]

#模擬登錄,保存cookie到cookie.txt中
result = opener.open(loginurl, postdata)

cookie.save(ignore_discard=True, ignore_expires=True)
#登陸后我們隨意跳轉到博客
url = "http://blog.csdn.net/XXXXXXXXX"
result = opener.open(url)

3.運行

python2.7 csdn_login.py

至此,當我們登陸后,可以隨意指定一個頁面進行登陸了。

總結

1.urllib和urllib2配合使用,因為urllib可以將post數據進行encode,而urllib2不可以

2.由于使用cookie、header等,用到了urllib2的基礎庫opener實現訪問等操作,當然也可以使用urllib2.Request(url,data,header)等其他訪問方式。

3.每個網站登錄方式可能不一樣,我們需要根據實際情況分析。

4.模擬登陸是我們通過實戰(zhàn)學習python的一種方法,而不是用它來惡意攻擊。

以上這篇python爬蟲之模擬登陸csdn的實例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python 使用os.remove刪除文件夾時報錯的解決方法

    Python 使用os.remove刪除文件夾時報錯的解決方法

    下面小編就為大家?guī)硪黄狿ython 使用os.remove刪除文件夾時報錯的解決方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Python 稀疏矩陣-sparse 存儲和轉換

    Python 稀疏矩陣-sparse 存儲和轉換

    這篇文章主要介紹了Python 稀疏矩陣-sparse 存儲和轉換的相關資料,需要的朋友可以參考下
    2017-05-05
  • Python3離線安裝Requests模塊問題

    Python3離線安裝Requests模塊問題

    這篇文章主要介紹了Python3離線安裝Requests模塊問題,本文實例代碼給大家介紹的非常詳細,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • python中self原理實例分析

    python中self原理實例分析

    這篇文章主要介紹了python中self原理,較為詳細的分析了self的原理與相關的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • Python使用ElementTree美化XML格式的操作

    Python使用ElementTree美化XML格式的操作

    這篇文章主要介紹了Python使用ElementTree美化XML格式的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python寫一個md5解密器示例

    python寫一個md5解密器示例

    這篇文章主要介紹了python寫一個md5解密器示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python應用開發(fā)頻繁假死的問題分析及解決

    Python應用開發(fā)頻繁假死的問題分析及解決

    最近在開發(fā)一款自動化的應用,但是,在測試時,卻發(fā)現了問題,當我點擊暫停任務后,此時子線程被阻塞,如果我這個時候點擊停止,那么就會任務結束,之后,如果我再點擊開始運行,整個應用就會卡死,所以本文介紹了Python應用開發(fā)頻繁假死的問題分析及解決,需要的朋友可以參考下
    2024-08-08
  • 基于python實現簡單日歷

    基于python實現簡單日歷

    這篇文章主要為大家詳細介紹了基于python實現簡單日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python編程使用matplotlib繪制動態(tài)圓錐曲線示例

    Python編程使用matplotlib繪制動態(tài)圓錐曲線示例

    這篇文章主要介紹了Python使用matplotlib繪制動態(tài)的圓錐曲線示例實現代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • Python基于mysql實現學生管理系統

    Python基于mysql實現學生管理系統

    這篇文章主要為大家詳細介紹了Python基于mysql實現學生管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評論