广告
返回顶部
首页 > 资讯 > 精选 >scrapy模拟登录代码
  • 480
分享到

scrapy模拟登录代码

2023-06-06 11:06:56 480人浏览 泡泡鱼
摘要

本文章向大家介绍scrapy模拟登录代码,主要包括{**}的使用实例,应用技巧,基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。在Scrapy中,模拟登陆网站一般有如下两种实现方式:    &n

本文章向大家介绍scrapy模拟登录代码,主要包括{**}的使用实例,应用技巧,基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在Scrapy中,模拟登陆网站一般有如下两种实现方式:

           (1) 请求时携带Cookies

           (2) 发送Post请求获取Cookies

请求时携带Cookies

对于一些Cookies过期时间很长的不规范网站,如果我们能够在Cookies过期之前爬取到所有我们想要的数据,可以考虑在请求时直接将Cookies信息带上来模拟用户登录。

以下是模拟登录GitHub的示例代码:

# -*- coding: utf-8 -*-import scrapyimport re class TmallLoginSpider(scrapy.Spider):  name = 'github_login3'  allowed_domains = ['github.com']  start_urls = ['https://github.com/']   def start_requests(self): # 请求时携带Cookies    cookies = '_ga=GA1.2.363045452.1554860671; tz=Asia%2FShanghai; _octo=GH1.1.1405577398.1554860677; _device_id=ee3ff12512668a1f9dc6fb33e388ea20; ignored_unsupported_browser_notice=false; has_recent_activity=1; user_session=5oxrsfsZCor1iJFCgRXXyeAXd8hcmzEUGh70-xHWLjQkT62Q; __Host-user_session_same_site=5oxrsfsZCor1iJFCgRXXyeAXd8hcmzEUGh70-xHWLjQkT62Q; logged_in=yes; dotcom_user=pengjunlee; _gat=1'    cookies = {i.split('=')[0]: i.split('=')[1] for i in cookies.split('; ')}    yield scrapy.Request(self.start_urls[0], cookies=cookies)      def parse(self, response): # 验证是否请求成功    print(re.findall('Learn Git and GitHub without any code!',response.body.decode()))

执行爬虫后,后台部分日志截图如下:

scrapy模拟登录代码

发送Post请求模拟登录

Scrapy还提供了两种通过发送Post请求来获取Cookies的方法。

scrapy.FORMRequest()

使用scrapy.FormRequest()发送Post请求实现模拟登陆,需要人为找出登录请求的地址以及构造出登录时所需的请求数据。

使用scrapy.FormRequest()模拟登录Github的示例代码: 

# -*- coding: utf-8 -*-import scrapyimport re class GithubLoginSpider(scrapy.Spider):  name = 'github_login'  allowed_domains = ['github.com']  start_urls = ['Https://github.com/login']   def parse(self, response): # 发送Post请求获取Cookies    authenticity_token = response.xpath('//input[@name="authenticity_token"]/@value').extract_first()    utf8 = response.xpath('//input[@name="utf8"]/@value').extract_first()    commit = response.xpath('//input[@name="commit"]/@value').extract_first()    form_data = {      'login': 'pengjunlee@163.com',      'passWord': '123456',      'WEBauthn-support': 'supported',      'authenticity_token': authenticity_token,      'utf8': utf8,      'commit': commit}    yield scrapy.FormRequest("https://github.com/session", formdata=form_data, callback=self.after_login)   def after_login(self, response): # 验证是否请求成功    print(re.findall('Learn Git and GitHub without any code!', response.body.decode()))

从后台日志不难看出,Scrapy 在请求完 https://github.com/session 后,自动帮我们重定向到了Github首页。

scrapy模拟登录代码

scrapy.FormRequest.from_response()

scrapy.FormRequest.from_response()使用起来比 scrapy.FormRequest()更加简单方便,我们通常只需要提供用户相关信息(账户和密码)即可,scrapy.FormRequest.from_response()将通过模拟点击为我们填充好其他的表单字段并提交表单。

使用scrapy.FormRequest.from_response()模拟登录Github的示例代码: 

# -*- coding: utf-8 -*-import scrapyimport re class GithubLogin2Spider(scrapy.Spider):  name = 'github_login2'  allowed_domains = ['github.com']  start_urls = ['https://github.com/login']   def parse(self, response): # 发送Post请求获取Cookies    form_data = {      'login': 'pengjunlee@163.com',      'password': '123456'    }    yield scrapy.FormRequest.from_response(response,formdata=form_data,callback=self.after_login)   def after_login(self,response): # 验证是否请求成功    print(re.findall('Learn Git and GitHub without any code!',response.body.decode()))

scrapy.FormRequest.from_response()方法还可以传入其他参数来帮我们更加精确的指定表单元素:

'''response (Response object) – 包含表单html的响应,将用来对表单的字段进行预填充formname (string) – 如果设置了该值,name 等于该值的表单将被使用formid (string) – 如果设置了该值,id 等于该值的表单将被使用formxpath (string) – 如果设置了该值,匹配该 xpath 的第一个表单将被使用formCSS (string) – 如果设置了该值,匹配该 css选择器的第一个表单将被使用formnumber (integer) – 索引值等于该值的表单将被使用,默认第一个(索引值为 0 )formdata (dict) – 传入的表单数据,将覆盖form 元素中已经存在的值clickdata (dict) – 用于查找可点击控件的属性值dont_click (boolean) – 如果设置为 True,将不点击任何元素,直接提交表单数据'''

以上就是小编为大家带来的scrapy模拟登录代码的全部内容了,希望大家多多支持编程网!

--结束END--

本文标题: scrapy模拟登录代码

本文链接: https://www.lsjlt.com/news/246644.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • scrapy模拟登录代码
    本文章向大家介绍scrapy模拟登录代码,主要包括{**}的使用实例,应用技巧,基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。在Scrapy中,模拟登陆网站一般有如下两种实现方式:    &n...
    99+
    2023-06-06
  • python scrapy简单模拟登录的代码分析
    1、requests模块。直接携带cookies请求页面。 找到url,发送post请求存储cookie。 2、selenium(浏览器自动处理cookie)。 找到相应的input标签,输入文本,点击登录。 3、s...
    99+
    2022-06-02
    python scrapy 模拟登录
  • python scrapy实现模拟登录功能
    本篇内容介绍了“python scrapy实现模拟登录功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、requests模块。直接携带c...
    99+
    2023-06-20
  • Python模拟登录验证码(代码简单)
    废话不多说了,直接给大家贴代码了。 import urllib import urllib2 import cookielib def getImg(picurl): ''' request for r...
    99+
    2022-06-04
    验证码 代码 简单
  • Android模拟登录评论CSDN实现代码
    有时候作为非官方开发的APP集成了官方的所有信息,但是现在需要实现另一个功能那就是登录发表评论到官方的网站,而非官方的APP并不知道官方网站是怎么实现登录与评论的,而且越大型的...
    99+
    2022-06-06
    csdn Android
  • Python模拟登录和登录跳转
    # coding:utf-8 import urllib import urllib2 import cookielib from bs4 import BeautifulSoup # 设置登录url login_url = "*...
    99+
    2023-01-31
    跳转 Python
  • python3模拟登录zabbix
    #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib.request import http.cookiejar import urllib.parse # 登录的主页面 ...
    99+
    2023-01-31
    zabbix
  • python模拟ssh登录
    首先更新pip 然后安装 pycrypto 、 paramiko;pycrypto是paramiko的内部依赖模块 pip3.7 install --upgrade pip pip3.7 install --upgrade pycrypto...
    99+
    2023-01-31
    python ssh
  • Selenium&Pytesseract模拟登录+验证码识别
    验证码是爬虫需要解决的问题,因为很多网站的数据是需要登录成功后才可以获取的.验证码识别,即图片识别,很多人都有误区,觉得这是爬虫方面的知识,其实是不对的.验证码识别涉及到的知识:人工智能,模式识别,机器视觉,图像处理.主要流程:1 图像采集...
    99+
    2023-01-30
    验证码 Selenium Pytesseract
  • 使用python模拟登录
    使用python模拟登录运行环境步骤浏览器阶段思路编码使用Java模拟登录 该方法是一个比较麻烦的方法,但是它不需要浏览器的配合,适合爬虫之类。 而另一种,使用webdriver的,使用比这个简单,可以用来做每日签到、打卡之类,使...
    99+
    2023-01-31
    python
  • scrapy的一些容易忽视的点(模拟登陆
    scrapy爬虫注意事项 一、item数据只有最后一条 这种情况一般存在于对标签进行遍历时,将item对象放置在了for循环的外部。解决方式:将item放置在for循环里面。   二、item字段传递后错误,混乱 有时候会遇到这样...
    99+
    2023-01-31
    scrapy
  • Python爬虫模拟登录带验证码网站
    爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法。python提供了强大的url库,想做到这个并不难。这里以登录学校教务系统为例,做一个简单的例子。 首先得明白cookie的作用,coo...
    99+
    2022-06-04
    爬虫 验证码 网站
  • python使用Cookie模拟登录
    from bs4 import BeautifulSoup import urllib2 url = 'https://www.douban.com' cookie='ll="118234"; __yadk_uid=FZYkMR92Oct...
    99+
    2023-01-31
    python Cookie
  • Python3.2模拟实现webqq登录
    这是我最初学习时自己做的一个python模拟登录webqq的实例代码,具体代码如下 import hashlib from urllib import request,parse from http i...
    99+
    2022-06-04
    webqq
  • 连接虚拟机 模拟远程登录
      Virtual Box安装 省略 Virtual Box导入OVA文件 1.全局设定     2.修改框住的路径,最好不要在C盘   3 取消检查更新 4.导入虚拟电脑 5.等待加载完成;加载完成后 OVA文件导入成功   ...
    99+
    2023-01-30
    虚拟机 远程登录
  • Python模拟百度登录实例
    原文:http://www.jb51.net/article/78406.htm 记录下来,慢慢学习: 要先获取token,然后再登录 # -*- coding: utf8 -*- import urll...
    99+
    2023-01-31
    实例 Python
  • python模拟get/post请求登录
    今天学习了python模拟登陆,然后自己进行一下总结,以csdn登录为例子,浏览器为Chrome 1:直接携带cookie请求url地址 1.1cookie放在headers中 import requests #1.直接携带cookie...
    99+
    2023-01-31
    python post
  • python 模拟网站登录——滑块验证码的识别
    普通滑动验证 以http://admin.emaotai.cn/login.aspx为例这类验证码只需要我们将滑块拖动指定位置,处理起来比较简单。拖动之前需要先将滚动条滚动到指定元...
    99+
    2022-11-11
  • Java使用IO模拟注册登录
    本文实例为大家分享了Java使用IO模拟注册登录的具体代码,供大家参考,具体内容如下 user的pojo类 package cn.lg.pojo; public class Use...
    99+
    2022-11-13
  • python实现网站的模拟登录
    本文主要用python实现了对网站的模拟登录。通过自己构造post数据来用Python实现登录过程。 当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...)。我是通过H...
    99+
    2022-06-04
    网站 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作