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 difflib模块示例讲解
Sep 13 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
Python数据库小程序源代码
Sep 15 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
Python函数递归调用实现原理实例解析
Aug 11 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
Python echarts实现数据可视化实例详解
Mar 03 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
基于mysql的论坛(6)
2006/10/09 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
nodejs开发微博实例
2015/03/25 NodeJs
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
Json解析的方法小结
2016/06/22 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
python中PIL安装简单教程
2016/04/21 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
django中media媒体路径设置的步骤
2019/11/15 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
python安装后的目录在哪里
2020/06/21 Python
卫校护理专业毕业生求职信
2013/11/26 职场文书
拾金不昧表扬信范文
2014/01/11 职场文书
职业生涯规划书前言
2014/04/15 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
党员服务承诺书
2014/05/28 职场文书
债务纠纷委托书
2014/08/30 职场文书
内科护士节演讲稿
2014/09/11 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
不同意离婚答辩状
2015/05/22 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
Golang入门之计时器
2022/05/04 Golang
Hive导入csv文件示例
2022/06/25 数据库