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编写一个每天都在系统下新建一个文件夹的脚本
May 04 Python
Django实现图片文字同时提交的方法
May 26 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
深入浅析python 中的匿名函数
May 21 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
详解Java中一维、二维数组在内存中的结构
Feb 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
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
再论Javascript的类继承
2011/03/05 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
python开发中module模块用法实例分析
2015/11/12 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
如何打开WebSphere远程debug
2014/10/10 面试题
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
化工工艺专业求职信
2013/09/22 职场文书
难忘的一课教学反思
2014/04/30 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA