Scrapy模拟登录赶集网的实现代码


Posted in Python onJuly 07, 2020

1.打开赶集网登录界面,先模拟登录并抓包,获得post请求的request参数

Scrapy模拟登录赶集网的实现代码

2. 我们只需构造出上面的参数传入formdata即可

参数分析:

setcookie:为自动登录所传的值,不勾选时默认为0。

__hash__值的分析:只需要查看response网页源代码即可 ,然后用正则表达式提取。

3.代码实现

1.workon到自己的虚拟环境 cmd切换到项目目录,输入scrapy startproject ganjiwangdenglu,然后就可以用pycharm打开该目录啦。

2.在pycharm terminal中输入scrapy ganji ganjicom 创建地址,如下为项目目录

Scrapy模拟登录赶集网的实现代码

3. 代码详情

import scrapy
import re

class GanjiSpider(scrapy.Spider):
  name = 'ganji'
  allowed_domains = ['ganji.com']
  start_urls = ['https://passport.ganji.com/login.php']

  def parse(self, response):
    hash_code = re.search(r'"__hash__":"(.+)"}', response.text).group(1) # 正则获取哈希
    img_url = 'https://passport.ganji.com/ajax.php?dir=captcha&module=login_captcha' # 验证码url
    yield scrapy.Request(img_url, callback=self.do_formdata, meta={'hash_code': hash_code}) # 发送获取验证码请求并保存验证码到本地

  def do_formdata(self, response):
    with open('yzm.jpg', 'wb') as f:
      f.write(response.body)
      # 验证码三种方案:1,保存下来手动输入,2,云打码,3 tesseract模块,在这里我们手动输入
    code = input('请输入验证码:')
    # 创建表单
    formdata = {
      'username': 'your_username',
      'password': 'your_password',
      'setcookie': '14',
      'checkCode': code,
      'next': '',
      'source': 'passport',
      '__hash__': response.request.meta['hash_code'] # meta是在respose.request中
    }
    login_url = "https://passport.ganji.com/login.php"
    yield scrapy.FormRequest(url=login_url, formdata=formdata, callback=self.after_login) # 发送登录请求

  def after_login(self, response):
    print(response.text)

4.终端输入scrapy carwl ganji 即可大功告成 。

返回来的json字符串解析如下:

Scrapy模拟登录赶集网的实现代码

注:setting中的设置不在赘述。

总结

到此这篇关于Scrapy模拟登录赶集网的文章就介绍到这了,更多相关Scrapy登录赶集网内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python利用elaphe制作二维条形码实现代码
May 25 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
python正则实现计算器功能
Dec 14 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
python处理数据,存进hive表的方法
Jul 04 Python
Django restframework 源码分析之认证详解
Feb 22 Python
python验证身份证信息实例代码
May 06 Python
java中的控制结构(if,循环)详解
Jun 26 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 #Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 #Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 #Python
Django REST Swagger实现指定api参数
Jul 07 #Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 #Python
python db类用法说明
Jul 07 #Python
python文件编写好后如何实践
Jul 07 #Python
You might like
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
Python最长公共子串算法实例
2015/03/07 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
python3调用windows dos命令的例子
2019/08/14 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
python isinstance函数用法详解
2020/02/13 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
什么是makefile? 如何编写makefile?
2012/08/08 面试题
车辆维修工自我评价怎么写
2013/09/20 职场文书
农药学硕士毕业生自荐信
2013/09/25 职场文书
护理学毕业生求职信
2013/11/14 职场文书
应届大学生自荐信
2013/12/05 职场文书
心理健康心得体会
2014/01/02 职场文书
大型营销活动计划书
2014/04/28 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
成绩单家长意见
2015/06/03 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js