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解析xml文件操作实例
Oct 05 Python
python实现FTP服务器服务的方法
Apr 11 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
解决python3 json数据包含中文的读写问题
May 10 Python
python自动发送邮件脚本
Jun 20 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
numpy np.newaxis 的实用分享
Nov 30 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
python数据处理实战(必看篇)
2017/06/11 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
详解python3中tkinter知识点
2018/06/21 Python
python命令行工具Click快速掌握
2019/07/04 Python
python将音频进行变速的操作方法
2020/04/08 Python
python实时监控logstash日志代码
2020/04/27 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
STP的判定过程
2012/10/01 面试题
优秀求职自荐信怎样写
2013/12/18 职场文书
企业法人代表证明书
2015/06/18 职场文书
学校隐患排查制度
2015/08/05 职场文书
四年级作文之植物
2019/09/20 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
nginx共享内存的机制详解
2022/03/21 Servers
使用Python获取字典键对应值的方法
2022/04/26 Python
Android Studio 计算器开发
2022/05/20 Java/Android