您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python scrapy简单模拟登录的代码分析

51自学网 2021-10-30 22:25:26
  python
这篇教程python scrapy简单模拟登录的代码分析写得很实用,希望能帮到您。

1、requests模块。直接携带cookies请求页面。

找到url,发送post请求存储cookie。

2、selenium(浏览器自动处理cookie)。

找到相应的input标签,输入文本,点击登录。

3、scrapy直接带cookies。

找到url,发送post请求存储cookie。

# -*- coding: utf-8 -*-import scrapyimport re class GithubLoginSpider(scrapy.Spider):    name = 'github_login'    allowed_domains = ['github.com']    start_urls = ['https://github.com/login']     def parse(self, response): # 发送Post请求获取Cookies        authenticity_token = response.xpath('//input[@name="authenticity_token"]/@value').extract_first()        utf8 = response.xpath('//input[@name="utf8"]/@value').extract_first()        commit = response.xpath('//input[@name="commit"]/@value').extract_first()        form_data = {            'login': 'pengjunlee@163.com',            'password': '123456',            'webauthn-support': 'supported',            'authenticity_token': authenticity_token,            'utf8': utf8,            'commit': commit}        yield scrapy.FormRequest("https://github.com/session", formdata=form_data, callback=self.after_login)     def after_login(self, response): # 验证是否请求成功        print(re.findall('Learn Git and GitHub without any code!', response.body.decode()))

知识点扩展:

parse_login方法是提交完表单后callback回调函数指定要执行的方法,为了验证是否成功。这里我们直接在response中搜索Welcome Liu这个字眼就证明登录成功。

这个好理解,重点是yield from super().start_resquests(),这个代表着如果一旦登录成功后,就直接带着登录成功后Cookie值,方法start_urls里面的地址。

这样的话登录成功后的response可以直接在parse里面写。

# -*- coding: utf-8 -*-import scrapyfrom scrapy import FormRequest,Requestclass ExampleLoginSpider(scrapy.Spider):    name = "login_"    allowed_domains = ["example.webscraping.com"]    start_urls = ['http://example.webscraping.com/user/profile']    login_url = 'http://example.webscraping.com/places/default/user/login'    def parse(self, response):        print(response.text)    def start_requests(self):        yield scrapy.Request(self.login_url,callback=self.login)    def login(self,response):        formdata = {            'email':'liushuo@webscraping.com','password':'12345678'}        yield FormRequest.from_response(response,formdata=formdata,                                        callback=self.parse_login)    def parse_login(self,response):        # print('>>>>>>>>'+response.text)        if 'Welcome Liu' in response.text:            yield from super().start_requests()

到此这篇关于python scrapy简单模拟登录的代码分析的文章就介绍到这了,更多相关python scrapy模拟登录的方法内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


python数据可视化之matplotlib.pyplot基础以及折线图
Opencv实现二维直方图的计算及绘制
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。