scrapy登录豆瓣并修改个人信息

简介: settings.py 文件中添加请求头,robots改为False。代码中注释较为详细,看不懂的私聊哦import scrapyfrom urllib import requestfrom PIL import Imageclass DoubanLoginSpiderSpider(scrapy.

settings.py 文件中添加请求头,robots改为False。
代码中注释较为详细,看不懂的私聊哦

import scrapy
from urllib import request
from PIL import Image


class DoubanLoginSpiderSpider(scrapy.Spider):
    name = 'douban_login_spider'
    allowed_domains = ['douban.com']
    start_urls = ['https://accounts.douban.com/login'] # 这个地方从登录的url开始写
    login_url = 'https://accounts.douban.com/login'

    def parse(self, response):
        data = {
            'source': 'None',
            'redir': 'https://www.douban.com/',
            'form_email': '',# 这里输入你的账号
            'form_password': '@', # 这里输入你的密码
            'remember': 'on',
            'login': '登录',
        }
        captcha_image = response.xpath('//img[@id="captcha_image"]/@src').get()
        print('='*50)
        # 豆瓣在输入错误几次才会出现验证码,这里加一个判断,如果没有出现验证码直接提交表单登录
        if captcha_image:
            captcha = self.regonize_captgha(captcha_image)
            data['captcha-solution: '] = captcha # 把验证码放入data中
            captcha_id = response.xpath('//input[@name=captcha-id]/@value').get()
            data['captcha_id'] = captcha_id # 把这个id也放进去
        # 执行登录操作,提交表单,执行回调解析登录后的页面。
        yield scrapy.FormRequest(url=self.login_url,formdata=data,callback=self.parse_page)

    def parse_page(self,response):
        if response.url == 'https://www.douban.com/':
            print('登录成功')
        else:
            print('登录失败')
        # 这里是修改个人信息的页面,我们跳转过去修改一下信息
        url = 'https://www.douban.com/people/184751170/'
        yield scrapy.Request(url=url,callback=self.xiugai)

    # 修改个人信息
    def xiugai(self,response):
        # 这里也是一个post请求,查找提交的参数,url。完成登录。
        ck = response.xpath('//input[@name="ck"]/@value').get()
        data = {'ck':ck,
            'signature': '云游十方'}
        edit_url = 'https://www.douban.com/j/people/184751170/edit_signature'
        # 这里提交表单以修改个人信息,同时指定callcake,如果不指定scrapy会默认调用parse方法。
        yield scrapy.FormRequest(url=edit_url,formdata=data,callback=self.parse_none)

    def parse_none(self,response):
        pass


    # 识别验证码,人工识别 也可以以人工打码的方式识别,在这里做扩展
    def regonize_captgha(self,captcha_img):
        request.urlretrieve(captcha_img,'captcha.png') # 把验证码保存到本地
        image = Image.open('captcha.png') # y用image库的open方法打开图片
        image.show() # 用show方法展现在窗口中
        captcha = input('请输入验证码:') # 手动输入验证码以完成登录
        return captcha


目录
相关文章
|
8月前
|
数据采集 存储 NoSQL
实现网页认证:使用Scrapy-Selenium处理登录
在网络爬虫的世界中,我们经常需要面对一些需要用户认证的网页,如登录、注册验证等。本文将介绍如何使用Scrapy-Selenium来处理这类网页,实现自动化登录和爬取。
175 0
实现网页认证:使用Scrapy-Selenium处理登录
|
11月前
|
数据采集 Web App开发 数据安全/隐私保护
为什么你用Scrapy 无法使用 Cookies登录
为什么你用Scrapy 无法使用 Cookies登录
61 0
|
数据采集 开发者 Python
14、web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
打码接口文件 # -*- coding: cp936 -*- import sys import os from ctypes import * # 下载接口放目录 http://www.
1205 0
|
数据采集 Web App开发 JavaScript
12、web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于start_urls,start_requests()返回的请求会替代star...
1729 0
|
Python 数据采集
|
Web App开发 数据采集 iOS开发
Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scrapy登录知乎之前,我们先通过requests模块登录知乎,来熟悉这个登录过程 不过在这之前需要了...
1808 0
|
3月前
|
数据采集 存储 数据处理
Scrapy:Python网络爬虫框架的利器
在当今信息时代,网络数据已成为企业和个人获取信息的重要途径。而Python网络爬虫框架Scrapy则成为了网络爬虫工程师的必备工具。本文将介绍Scrapy的概念与实践,以及其在数据采集和处理过程中的应用。
23 1
|
4月前
|
数据采集 调度 Python
Scrapy爬虫中合理使用time.sleep和Request
Scrapy爬虫中合理使用time.sleep和Request
|
1月前
|
数据采集 Web App开发 搜索推荐
项目配置之道:优化Scrapy参数提升爬虫效率
项目配置之道:优化Scrapy参数提升爬虫效率
|
3月前
|
数据采集 存储 调度
Scrapy:解锁网络爬虫新境界
在当今信息爆炸的时代,获取并处理大量网络数据是互联网行业中至关重要的一环。Python网络爬虫框架Scrapy作为一款高效、灵活的工具,为开发者提供了强大的能力来抓取、解析和存储各类网页信息。本文将介绍Scrapy的概念、主要特点以及实践经验,帮助读者掌握这一工具,并在实际项目中应用。