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调用新浪微博API项目实践
Jul 28 Python
python入门之语句(if语句、while语句、for语句)
Jan 19 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
pytorch+lstm实现的pos示例
Jan 14 Python
python异步Web框架sanic的实现
Apr 27 Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 Python
Flask搭建一个API服务器的步骤
May 28 Python
Python实现为PDF去除水印的示例代码
Apr 03 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入门的学习方法
2007/01/02 PHP
php部分常见问题总结
2008/03/27 PHP
PHP 处理图片的类实现代码
2009/10/23 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
理解AngularJs指令
2015/12/10 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
Python反射的用法实例分析
2018/02/11 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python csv模块使用方法代码实例
2019/08/29 Python
python根据时间获取周数代码实例
2019/09/30 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
本科生的职业生涯规划范文
2014/01/09 职场文书
英文求职信范文
2014/05/23 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
导游词之河北邯郸
2019/09/12 职场文书