本人新手,所以采取移動(dòng)端登錄,
首先打開m.weibo.com
接下來輸入賬戶密碼登錄,進(jìn)行抓包职员,這里可以看到登錄的url是https://passport.weibo.cn/sso/login
image.png
然后看參數(shù)內(nèi)容碧信,可以看到有username,password
image.png
接下來開始碼
param = {
'username': 'username',
'password': 'password',
'savestate': 1,
'r': 'http://m.weibo.cn/'
}
url = 'https://passport.weibo.cn/sso/login'
url_list = [('https://m.weibo.cn/api/container/getSecond?containerid=1005053295408160_'
'-_FOLLOWERS&page={}'.format(index)) for index in range(1, 9, 1)]
偽裝成瀏覽器赊琳,設(shè)置請(qǐng)求頭
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
設(shè)置cookie
cookie = {
'SUB': '_2A257ojDeRhGeVM4lcV8CbNzTyIHXVUc8ZrrDV6PbkdBeLRfdkW0BL90qwu2eRETLthwusaALWYW0Mg..',
'Path': '\/',
'Domain': '.weibo.cn',
'Expires': 'Fri, 10 Aug 2018 02:52:35 GMT',
'_T_WM': '45539fc43e99e886ce17e795d0b88',
'SCF': 'Aij4zi-OmgzuJPRpOQqpZ-ASMB3LshtNNn-DL4wO0DwTnXeihX4F2uo4youXrual-w4UuBxGTR8UKP4Qq9SLA.',
'SUHB': '0P1M9JSHSW7ZoW',
'SSOLoginState': '15023355'
}
# 設(shè)置一個(gè)會(huì)話
s = requests.Session()
# 發(fā)送post請(qǐng)求
s.post(url, param, headers)
登錄成功后我們看一下我的關(guān)注列表~
image.png
可以看到關(guān)注列表請(qǐng)求的url是文章上面的url2
for url_concern in url_list:
res = requests.get(url=url_concern, cookies=cookie, headers=headers)
可以看到請(qǐng)求結(jié)果返回的json對(duì)象
image.png
我們只要取到結(jié)果中的cards對(duì)象就可以了,再對(duì)結(jié)果進(jìn)行一下遍歷
users = res.json()['cards']
for user in users:
name = user.get('user').get('screen_name')
print(name)
得到以下信息,就是我們的關(guān)注列表啦
image.png
如果還需要其他信息砰碴,看一下json中返回了哪些躏筏,然后自己處理就可以啦
最后貼上完整代碼
#!/usr/bin/env python3
# -*-coding:utf-8-*-
import requests
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
cookie = {
'SUB': '_2A250j7ojDeRhGeVM4lcV8CbNzTyIHXVUc8ZrrDV6PUJbkdBeLRfdkW0BL90qwu2eRETLthwusaALWYW0M..',
'Path': '\/',
'Domain': '.weibo.cn',
'Expires': 'Fri, 10 Aug 2018 02:52:35 GMT',
'_T_WM': '455639fc43e99e886ce1d07e795d0b88',
'SCF': 'Aij4zi-OmgzuJPRpOQ3dqpZ-ASMB3LshtNNn-DL4wO0DwTnXeihX4F2uo4youXrual-w4UuBxGTR8UKP4Qq9SL.',
'SUHB': '0P1M9JSHSW7Zo',
'SSOLoginState': '150233355'
}
url = 'https://passport.weibo.cn/sso/login'
url_list = [('https://m.weibo.cn/api/container/getSecond?containerid=1005053295408160_'
'-_FOLLOWERS&page={}'.format(index)) for index in range(1, 9, 1)]
param = {
'username': 'your username',
'password': 'your password',
'savestate': 1,
'r': 'http://m.weibo.cn/'
}
s = requests.Session()
s.post(url, param, headers)
for url_concern in url_list:
res = requests.get(url=url_concern, cookies=cookie, headers=headers)
users = res.json()['cards']
for user in users:
name = user.get('user').get('screen_name')
print(name)