介绍
本篇内容介绍了“python scrapy实现模拟登录功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
<强> 1,请求模块。直接携带饼干请求页面。强>
找到url,发送帖子请求存储饼干。
<强> 2,硒(浏览器自动处理cookie)。强>
找到相应的输入标签,输入文本,点击登录。
<强> 3,scrapy直接带饼干。强>
找到url,发送帖子请求存储饼干。
#, - *安康;编码:utf-8 - * - import scrapy import 再保险 , class GithubLoginSpider (scrapy.Spider): ,,,name =, & # 39; github_login& # 39; ,,,allowed_domains =, (& # 39; github.com& # 39;】 ,,,start_urls =, (& # 39; https://github.com/login& # 39;) , ,,,def 解析(自我,,反应):,#,发送帖子请求获取饼干 ,,,,,,,authenticity_token =, response.xpath(& # 39;//输入[@ name=癮uthenticity_token"]/@ value # 39;) .extract_first () ,,,,,,,utf8 =, response.xpath(& # 39;//输入[@ name=皍tf8"]/@ value # 39;) .extract_first () ,,,,,,,commit =, response.xpath(& # 39;//输入[@ name=癱ommit"]/@ value # 39;) .extract_first () ,,,,,,,form_data =, { ,,,,,,,,,,,& # 39;登录# 39;:,& # 39;pengjunlee@163.com& # 39; ,,,,,,,,,,,& # 39;密码# 39;:,& # 39;123456 & # 39; ,,,,,,,,,,,& # 39;webauthn-support& # 39;:, & # 39;支持# 39; ,,,,,,,,,,,& # 39;authenticity_token& # 39;:, authenticity_token, ,,,,,,,,,,,& # 39;use utf8 # 39;:, use utf8, ,,,,,,,,,,,& # 39;提交# 39;:,提交} ,,,,,,,油品收率scrapy.FormRequest (“https://github.com/session",, formdata=https://www.yisu.com/zixun/form_data,回调=self.after_login) def after_login(自我、响应):#验证是否请求成功 (重新打印。findall('学习Git和GitHub没有任何代码!’,response.body.decode ()))
知识点扩展:
parse_login方法是提交完表单后回调函数回调函数指定要执行的方法,为了验证是否成功。这里我们直接在响应中搜索欢迎刘这个字眼就证明登录成功。
这个好理解,重点是收益率从超级().start_resquests(),这个代表着如果一旦登录成功后,就直接带着登录成功后Cookie值,方法start_urls里面的地址。
这样的话登录成功后的反应可以直接在解析里面写。
#, - *安康;编码:,utf-8 - * - import scrapy 得到scrapy import  FormRequest,请求 class ExampleLoginSpider (scrapy.Spider): ,,,name =,“login_" ,,,allowed_domains =, (“example.webscraping.com") ,,,start_urls =, (& # 39; http://example.webscraping.com/user/profile& # 39;) ,,,login_url =, & # 39; http://example.webscraping.com/places/default/user/login& # 39; ,,,def 解析(自我,,反应): ,,,,,,,印刷(response.text) ,,,def start_requests(自我): ,,,,,,,油品收率scrapy.Request (self.login_url,回调=self.login) ,,,def 登录(自我,反应): ,,,,,,,formdata =, { ,,,,,,,,,,,& # 39;电子邮件# 39;:& # 39;liushuo@webscraping.com& # 39;, & # 39;密码# 39;:& # 39;12345678 & # 39;} ,,,,,,,油品收率FormRequest.from_response(响应,formdata=https://www.yisu.com/zixun/formdata 回调=self.parse_login) def parse_login(自我,反应): #打印(“>>>>”+ response.text) 如果response.text“欢迎刘”: .start_requests收益率从super () ()