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条件和循环的使用方法
Nov 01 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
使用TensorFlow实现SVM
Sep 06 Python
python+flask实现API的方法
Nov 21 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
Python将list元素转存为CSV文件的实现
Nov 16 Python
使用python爬取抖音app视频的实例代码
Dec 01 Python
Python中json.dumps()函数的使用解析
May 17 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精确计算功能示例
2016/11/29 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
javascript动画浅析
2012/08/30 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
python基础教程之常用运算符
2014/08/29 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python+os根据文件名自动生成文本
2019/03/21 Python
python打造爬虫代理池过程解析
2019/08/15 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
迷你西餐厅创业计划书范文
2013/12/31 职场文书
财务部总监岗位职责
2014/03/12 职场文书
2014年会策划方案
2014/05/11 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
对公司的意见和建议
2015/06/04 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers