社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
1、第一种是requests
url = 'https://passport.ctrip.com'
data = {'accessCode': "xxxxx", 'strategyCode': "xxxxxx", 'userName': "xxxxxxx"}
session = requests.Session()
session.headers = header
pram = session.post(url,data = data,headers = header)
# ~ session.get(url)
print(pram.url)
print("Cookie is set to:")
print(pram.cookies)
print("-----------")
这种是直接发送requests.Session的POST去登录
第二种是使用selenium加浏览器登录,因为selenium本身没有浏览器
from selenium import webdriver
chromedriver = 'D:/Python35/selenium/webdriver/chromedriver.exe'
geturl = 'https://passport.baidu.com/v2/?login'
username = "用户名"
password = "密码"
browser = webdriver.Chrome(executable_path=chromedriver)
browser.get(geturl)
assert "登录百度帐号" in browser.title
browser.find_element_by_id("TANGRAM__PSP_3__userName").send_keys(username)
browser.find_element_by_id("TANGRAM__PSP_3__password").send_keys(password)
browser.find_element_by_id("TANGRAM__PSP_3__submit").click()
注意比较这两种的区别,requests是直接Post过去登录,账号密码,还有headers都需要自己到通过浏览器的审查元素看,
如:
对于post一般都在xhr或者js里面查看,上图有post是发送请求给服务器
接着看下面有Request Headers,这很重要,这是发送请求给服务器,为了反爬虫,我们都要设置头
最后注意了,这是账号和密码,最好都要把data这部分都写出来,密码需要你模拟登录一下,最终获得的是加密过后的
可以通过
print(pram.url)
print("Cookie is set to:")
print(pram.cookies)
print("-----------")
打印是否登录成功
requests在处理cookies方面很好,但是没办法爬取javascrip,所以能不能用requests的cookies放在selenium实现保持登录,还在实验中。
结果证明我的想法是对的,在网上看了很多关于模拟登录的博客,都是直接在网页上复制cookies到python里面,或者是模拟登录后,获取cookies,将其保存到文件上,再加载cookies。
其实可cookies当作字符串处理,再转换成字典,详细见下章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!