python 网络爬虫 模拟登录有两种方式 - Go语言中文社区

python 网络爬虫 模拟登录有两种方式


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当作字符串处理,再转换成字典,详细见下章

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/tingguan/article/details/89398905
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:33:42
  • 阅读 ( 1069 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢