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生成随机验证码(中文验证码)示例
Apr 03 Python
Python getopt模块处理命令行选项实例
May 13 Python
Python中操作文件之write()方法的使用教程
May 25 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
pandas多级分组实现排序的方法
Apr 20 Python
Python简单定义与使用二叉树示例
May 11 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Python如何使用turtle库绘制图形
Feb 26 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
Python学习开发之图形用户界面详解
Aug 23 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
CodeIgniter生成静态页的方法
2016/05/17 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
django+echart数据动态显示的例子
2019/08/12 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
高性能装备提升营地:Kammok
2019/02/27 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
UNIX文件类型
2013/08/29 面试题
自荐信不宜过于夸大
2013/11/06 职场文书
应届生找工作求职信
2014/06/24 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
党员自我评价2015
2015/03/03 职场文书
产品调价通知函
2015/04/20 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
签字仪式主持词
2015/07/03 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript