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 httplib,smtplib使用方法
Sep 06 Python
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
解决每次打开pycharm直接进入项目的问题
Oct 28 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
Form表单及django的form表单的补充
Jul 25 Python
Python使用lambda表达式对字典排序操作示例
Jul 25 Python
Python enumerate内置库用法解析
Feb 24 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
提高python代码运行效率的一些建议
Sep 29 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 Python
Python语言规范之Pylint的详细用法
Jun 24 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 fckeditor 调用的函数
2009/06/21 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
自动化专业毕业生自荐信
2013/11/01 职场文书
安全生产检查通报
2014/01/29 职场文书
青年标兵事迹材料
2014/08/16 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
大学生团员个人总结
2015/02/14 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书