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中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
用tensorflow搭建CNN的方法
Mar 05 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
python numpy实现文件存取的示例代码
May 26 Python
简单了解python单例模式的几种写法
Jul 01 Python
python装饰器使用实例详解
Dec 14 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
python继承threading.Thread实现有返回值的子类实例
May 02 Python
Python接口测试数据库封装实现原理
May 09 Python
如何使用python记录室友的抖音在线时间
Jun 29 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
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
Python3实现从文件中读取指定行的方法
2015/05/22 Python
python实现逻辑回归的方法示例
2017/05/02 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
python 制作网站小说下载器
2021/02/20 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
幼儿园大班新学期寄语
2014/01/18 职场文书
就业自我评价
2014/02/04 职场文书
房产继承公证书
2014/04/09 职场文书
婚假请假条怎么写
2014/04/10 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
信息合作协议书
2014/10/09 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
政风行风评议工作总结
2014/10/21 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android