前言分析目标网站的登录方式
目标地址: https://github.com/login
登录方式做出分析:
第一,用form表单方式提交信息,
第二,有csrf_token,
第三 ,是以post请求发送用户名和密码时,需要第一次get请求的cookie
第四,登录成功以后,请求其他页面是只需要带第一次登录成功以后返回的cookie就可以。
以get发送的请求获取我们想要的token和cookie
代码:
1
2
3
4
5
6
7
8
9
|
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) |
#结果::
1
2
3
4
5
|
{ 'logged_in' : 'no' , '_gh_sess' : 'vdfwa2hjwjfmb1hpruflrdvhumc3mxg1tk02tdhsunhdmerungpyt2y4stlqz2xcv1lczefhk21wdfr1bkpgyuv0wejzcdeydwfzcm93 avc4nk91q2jicmtrv0niq0lrswm4afhrsvfybctcczbwdnhvn0yysvjjnufpqnhytznurkjwndjzuwxucek2m2jkm3vsmddxvhnoy1htqkthckjqzdjyuvr2rzbnuku3vnltrvf2u m1admu3c3yzsglyvnvzvm0ycna1euhet1jrvwnln0psbndkwjljmgttng5urwj1eu8rqjzxnemxvethcgvobdfby2gvc2zzwxcvwwzab29wqwjyu0l6cmzscwhbqulzyta3dtrtb 3l1s0hdyythy2v1suhewlzvvlzoswzptzbjnmlidff2dzi2bwgtltjon1lqbm5jwutsymtivem1cljpake9pq % 3d % 3d - - 897dbc36c123940c8eae5d86f276dead8318fd6c '} prz0wapebu5shksgcesn0fijwou9alw8epusxlqgcw1ezirl0vbskvktyqie8vhxhph2h / uzgav6xx + yjtgova = = |
获取这两个值就可以,进行下一步发送登录请求:
第二步post方式提交用户名密码
代码::
这个代码接着上面的get请求,只是post请求的部分,
1
2
3
4
5
6
7
8
9
10
11
12
|
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 就可以
#完整代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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(), ) |
查看个人详情页
1
2
3
4
5
6
|
print (r2.cookies.get_dict()) r3 = requests.get( 'https://github.com/13131052183/product' , #查看个人的详情页 cookies = r2.cookies.get_dict() ) print (r3.text) |
总结
以上所述是小编给大家介绍的python爬虫使用脚本登录github并查看信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/littlesky1124/p/9315617.html