Scrapy模拟登录赶集网的实现代码

 更新时间:2020年07月07日 10:06:52   作者:人丑就要多读书-Wu  
这篇文章主要介绍了Scrapy模拟登录赶集网的实现代码,本文通过代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.打开赶集网登录界面,先模拟登录并抓包,获得post请求的request参数

2. 我们只需构造出上面的参数传入formdata即可

参数分析:

  setcookie:为自动登录所传的值,不勾选时默认为0。

  __hash__值的分析:只需要查看response网页源代码即可 ,然后用正则表达式提取。

3.代码实现

1.workon到自己的虚拟环境 cmd切换到项目目录,输入scrapy startproject ganjiwangdenglu,然后就可以用pycharm打开该目录啦。

2.在pycharm terminal中输入scrapy ganji ganjicom 创建地址,如下为项目目录

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字符串解析如下:

注:setting中的设置不在赘述。

总结

到此这篇关于Scrapy模拟登录赶集网的文章就介绍到这了,更多相关Scrapy登录赶集网内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Tkinter组件实现Radiobutton的示例

    Tkinter组件实现Radiobutton的示例

    Radiobutton组件用于实现多选一的问题,本文主要介绍了Tkinter组件实现Radiobutton的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境

    利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境

    这篇文章主要介绍了利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python 自动重连wifi windows的方法

    python 自动重连wifi windows的方法

    今天小编就为大家分享一篇python 自动重连wifi windows的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python实现矩阵转置的几种方法详解

    Python实现矩阵转置的几种方法详解

    这篇文章主要介绍了Python实现矩阵转置的几种方法详解,zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存,需要的朋友可以参考下
    2023-08-08
  • python中readline判断文件读取结束的方法

    python中readline判断文件读取结束的方法

    这篇文章主要介绍了python中readline判断文件读取结束的方法,实例形式详细分析了Python中readline的用法,需要的朋友可以参考下
    2014-11-11
  • Python列表的深复制和浅复制示例详解

    Python列表的深复制和浅复制示例详解

    这篇文章主要给大家介绍了关于Python列表的深复制和浅复制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python实现i人事自动打卡的示例代码

    Python实现i人事自动打卡的示例代码

    这篇文章主要介绍了Python实现i人事自动打卡的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python随机数用法实例详解【基于random模块】

    Python随机数用法实例详解【基于random模块】

    这篇文章主要介绍了Python随机数用法,结合实例形式分析了基于random模块的各种随机数操作常用技巧,需要的朋友可以参考下
    2017-04-04
  • python实现带界面的井字棋小游戏

    python实现带界面的井字棋小游戏

    这篇文章我们主要介绍的是python实现带界面的井字棋小游戏,从安装tkinter开始,然后初始化窗口,定义按钮即查找获胜条件,想具体了解的小伙伴可以参考下文,附有详细代码
    2021-09-09
  • PyCharm:method may be static问题及解决

    PyCharm:method may be static问题及解决

    这篇文章主要介绍了PyCharm:method may be static问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论