zoukankan      html  css  js  c++  java
  • scrapy模拟登陆豆瓣网(处理验证码登陆)

    我们知道有一些网站是需要验证码才可以登陆的,比如豆瓣网在错误输入几次账号密码后,都会需要提交包含验证码的表单才可以登陆,便需要处理验证码型登陆
    技术路径:scrapy爬虫框架。
    技术重点:还是scrapy的FormRequest方法。

    (由于由于不涉及到豆瓣网登陆后页面的解析(老生常谈的问题了)。我们只需要编写spider模块的代码就可以了。)
    我们给出代码

    # -*- coding: utf-8 -*-
    import scrapy
    from scrapy.http import FormRequest,Request
    from scrapy.selector import Selector
    class DoubanspiderSpider(scrapy.Spider):
        name = 'doubanspider'
        #start_urls = ['http://douban.com/']
        login_url='https://accounts.douban.com/login'
        def start_requests(self):
            yield Request('https://accounts.douban.com/login',callback=self.login)
       
        #下载验证码和模拟登陆
        def login(self,response):        
        	#用于获取验证码的图片链接
            login_pic_url=response.xpath('//*[@id="captcha_image"]/@src').extract_first()                    
            print('获取验证码url中')
            #这里打印出验证码的链接,打开浏览器查看链接,记录下验证码
            print(login_pic_url)     
            #在这里的表单中填写验证码
            data={'captcha-solution':input('输入验证码:'),
            'form_email':'1004210191@qq.com','form_password':'*********'}
            #利用FormRequest.from_response()方法提交表单
            完成页面解析
            yield FormRequest.from_response(response,formdata=data,callback=self.parsepage)
        #解析登陆后的页面,解析内容可自己实现,在这里就以保存网页作为解析内容	
        def parsepage(self, response):
            with open('D:/豆瓣.html','wb') as f:
                f.write(response.body)
      
    

    这样我们就实现了模拟登陆需要验证码的网站。

  • 相关阅读:
    [ASP.NET][实例]用户控件的设计与使用
    构造器[java、C#]
    [转]clob和blob两个字段什么分别?
    C#的反射机制调用方法
    C# WinForm 控件美化之改变ListView Head 的背景色
    C# 创建快捷方式
    Copy Html To Clipboard
    改善C#程序的建议在线程同步中使用信号量
    Paste html from Clipboard
    Winform部署mshtml程序集出错的一个解决方案
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072692.html
Copyright © 2011-2022 走看看