Python爬蟲之用指令碼登入Github並查看資訊

來源:互聯網
上載者:User

標籤:http   分享   ESS   提交   utf8   bnu   stl   bubuko   dict   

前言分析目標網站的登入方式

  目標地址:https://github.com/login    

  登入方式做出分析:

      第一,用form表單方式提交資訊,

      第二,有csrf_token,

      第三 ,是以post請求發送使用者名稱和密碼時,需要第一次get請求的cookie

      第四,登入成功以後,請求其他頁面是只需要帶第一次登入成功以後返回的cookie就可以。

  

以get發送的請求擷取我們想要的token和cookie

 

 

 

代碼:

 

import requests   from bs4 import BeautifulSoupr1 = requests.get(‘https://github.com/login‘)soup = BeautifulSoup(r1.text,features=‘lxml‘)  #產生soup 對象s1 = soup.find(name=‘input‘,attrs={‘name‘:‘authenticity_token‘}).get(‘value‘)  #查到我們要的tokenr1_cookies = r1.cookies.get_dict()  # 下次提交使用者名稱時用的cookie# print(r1_cookies)   # print(s1)#結果::{‘logged_in‘: ‘no‘, ‘_gh_sess‘: ‘VDFWa2hJWjFMb1hpRUFLRDVhUmc3MXg1Tk02TDhsUnhDMERuNGpyT2Y4STlQZ2xCV1lCZEFhK21wdFR1bkpGYUV0WEJzcDEydWFzcm93
aVc4Nk91Q2JicmtRV0NIQ0lRSWM4aFhrSVFYbCtCczBwdnhVN0YySVJJNUFpQnhyTzNuRkJwNDJZUWxUcEk2M2JkM3VSMDdXVHNOY1htQkthckJQZDJyUVR2RzBNUkU3VnltRVF2U
m1admU3c3YzSGlyVnVZVm0ycnA1eUhET1JRVWNLN0pSbndKWjljMGttNG5URWJ1eU8rQjZXNEMxVEthcGVObDFBY2gvc2ZzWXcvWWZab29wQWJyU0l6cmZscWhBQUlzYTA3dTRtb
3l1S0hDYytHY2V1SUhEWlZvVlZoSWZpTzBjNmlidFF2dzI2bWgtLTJON1lqbm5jWUtSYmtiVEM1clJPakE9PQ%3D%3D--897dbc36c123940c8eae5d86f276dead8318fd6c‘}pRz0wapEbu5shksGCeSN0FijWoU9ALw8EPUsXlqgcw1Ezirl0VbSKvkTYqIe8VhxhPH2H/uzGaV6XX+yjTGoVA==

 

擷取這兩個值就可以,進行下一步發送登入請求:

第二步post方式提交使用者名稱密碼

 

 

 

 代碼::

這個代碼接著上面的get請求,只是post請求的部分,r2 = requests.post(    ‘https://github.com/session‘,    data ={        ‘commit‘:‘Sign in‘,        ‘utf8‘:‘?‘,        ‘authenticity_token‘:s1,        ‘login‘:‘[email protected]‘,        ‘password‘:‘使用者名稱密碼‘                  # 填上正確的使用者名稱即可    },    cookies = r1.cookies.get_dict(),       # 這裡需要第一次的cookie)print(r2.cookies.get_dict())      # 這個是成功以後的cookie

  

 成功以後就返回登入頁面的資訊。

 

基於post登入成功後查看個人詳情頁。

 這裡只需要帶著登入成功以後的cookie 就可以

  #完整代碼import requestsfrom bs4 import BeautifulSoupr1 = requests.get(‘https://github.com/login‘)soup = BeautifulSoup(r1.text,features=‘lxml‘)s1 = soup.find(name=‘input‘,attrs={‘name‘:‘authenticity_token‘}).get(‘value‘)r1_cookies = r1.cookies.get_dict()print(r1_cookies)print(s1)r2 = requests.post(    ‘https://github.com/session‘,    data ={        ‘commit‘:‘Sign in‘,        ‘utf8‘:‘?‘,        ‘authenticity_token‘:s1,        ‘login‘:‘[email protected]‘,        ‘password‘:‘密碼‘    },    cookies = r1.cookies.get_dict(),)查看個人詳情頁print(r2.cookies.get_dict()) r3 = requests.get(       ‘https://github.com/13131052183/product‘,   #查看個人的詳情頁        cookies = r2.cookies.get_dict() ) print(r3.text)

  

 

Python爬蟲之用指令碼登入Github並查看資訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.