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)
      
    

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

  • 相关阅读:
    HDU-1527 取石子游戏
    HDU-1846 Brave Game
    HDU-1850 Being a Good Boy in Spring Festival
    HDU-2509 Be the Winner
    HDU-1907 John
    HDU-1969 Pie
    HDU-1501 Zipper
    HDU-2289 Cup
    最大子矩阵和
    HDU3466(01背包变种)
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072692.html
Copyright © 2011-2022 走看看