热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Scrapy爬虫模拟登陆豆瓣

首先还是创建爬虫,其命令如下:#01.创建Scrapy项目scrapystartprojectsimulate_login#02.进入simulate_login目录下,创建爬虫s

首先还是创建爬虫,其命令如下:

#01.创建 Scrapy 项目
scrapy startproject simulate_login
#02. 进入 simulate_login目录下,创建爬虫
scrapy genspider your_spider douban.com

模拟登陆豆瓣的关键点
1、分析真实post地址,寻找formdata;
2、模拟post,构造类似的formdata;
3、处理验证码。
豆瓣登陆地址为https://accounts.douban.com/login,进入登陆界面,我们首先输入账号和密码,密码故意输错,然后输入正确的验证码。按F12分析真实的post地址—,寻找他的formdata,如下图:

《Scrapy爬虫模拟登陆豆瓣》 捕获.PNG

实战操作:
几个注意事项:
1、注意Python2和Python3的部分语法区别;
2、注意根据自己的实际情况,填写headers部分。

到2018年8月10日为止,该方法还可以登陆豆瓣。下面贴出主要代码:

# -*- coding: utf-8 -*-
import scrapy
import urllib,re
from scrapy.http import Request,FormRequest
class YourSpiderSpider(scrapy.Spider):
name = 'your_spider'
allowed_domains = ['douban.com']
#start_urls = ['http://douban.com/']
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36"} #供登录模拟使用 def start_requests(self):
url='https://www.douban.com/accounts/login'
#return [Request(url=url,meta={"COOKIEjar":1},callback=self.parse)]#可以传递一个标示符来使用多个。如meta={'COOKIEjar': 1}这句,后面那个1就是标示符
return [scrapy.FormRequest("https://accounts.douban.com/login", headers=self.headers, meta={"COOKIEjar":1}, callback=self.parse)]
def get_content(self, response):
title = response.xpath('//title/text()').extract()[0]
if u'登录豆瓣' in title:
print("登录失败,请重试")
else:
print("登陆成功")
def parse(self, response):

captcha = response.xpath('//*[@id="captcha_image"]/@src').extract()
print(captcha)
if len(captcha)>0:
#有验证码,人工输入验证码
urllib.request.urlretrieve(captcha[0],filename=r"C:\Users\LBX\your_project\simulate_login\simulate_login\captcha.png")
captcha_value=input('查看captcha.png,有验证码请输入:')
data={
"form_email":"18353113181@163.com",
"form_password":"9241113minda",
"captcha-solution":captcha_value,
}
else:
#此时没有验证码
print("无验证码")
data={
"form_email":"18353113181@163.com",
"form_password":"9241113minda",
}
print("正在登陆中.....")
#进行登录
return[
FormRequest.from_response(
response,
meta={"COOKIEjar":response.meta["COOKIEjar"]},
headers=self.headers,
formdata=data,
callback=self.get_content,
)
]


推荐阅读
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • JavaScript中属性节点的类型及应用
    本文深入探讨了JavaScript中属性节点的不同类型及其在实际开发中的应用,帮助开发者更好地理解和处理HTML元素的属性。通过具体的案例和代码示例,我们将详细解析如何操作这些属性节点。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 解决网站乱码问题的综合指南
    本文总结了导致网站乱码的常见原因,并提供了详细的解决方案,包括文件编码、HTML元标签设置、服务器响应头配置、数据库字符集调整以及PHP与MySQL交互时的编码处理。 ... [详细]
  • Python技巧:利用Cookie实现自动登录绕过验证码
    本文详细介绍了如何通过Python和Selenium库利用浏览器Cookie实现自动登录,从而绕过验证码验证。文章提供了具体的操作步骤,并附有代码示例,帮助读者理解和实践。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 基于Spring Boot的家政服务平台毕业设计项目(含源代码)
    本文档介绍了如何搭建和运行一个基于Spring Boot的家政服务平台,旨在为计算机专业学生提供毕业设计参考。项目涵盖了从环境配置到核心功能实现的全过程。 ... [详细]
author-avatar
木头人2幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有