Python爬蟲之用腳本登錄Github並查看信息


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

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

  登錄方式做出分析:

      第一,用form表單方式提交信息,

      第二,有csrf_token,

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

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

  

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

 

 

 

代碼:

 

import requests   
from bs4 import BeautifulSoup

r1 = requests.get('https://github.com/login')

soup = BeautifulSoup(r1.text,features='lxml')  #生成soup 對象

s1 = soup.find(name='input',attrs={'name':'authenticity_token'}).get('value')  
#查到我們要的token

r1_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':'541756569@qq.com',
        'password':'用戶名密碼'                  # 填上正確的用戶名即可
    },
    cookies = r1.cookies.get_dict(),       # 這里需要第一次的cookie
)

print(r2.cookies.get_dict())      # 這個是成功以后的cookie

  

 成功以后就返回登錄頁面的信息。

 

基於post登錄成功后查看個人詳情頁。

 這里只需要帶着登錄成功以后的cookie 就可以

  #完整代碼


import requests
from bs4 import BeautifulSoup

r1 = 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':'541756569@qq.com',
        '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)

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM