前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scrapy实战|模拟登录人人网实战

scrapy实战|模拟登录人人网实战

作者头像
Python进击者
发布2019-09-17 15:33:46
6160
发布2019-09-17 15:33:46
举报
文章被收录于专栏:JAVAandPython君

1

写在前面的话

前面我们学习了scrapy并且实战了爬取当当网的数据,相信大家对scrapy的基本操作还是掌握的OK的了,如果没看前面文章的朋友可以去看一看。今天我们继续深入一下scrapy框架,用scrapy框架来登录人人网。

2

写爬虫之前必要的分析!

上图就是我们的人人网了,通常我们想要去登录一个网站,有两种思路通过抓包工具来抓取post数据,看看里面有没有表单,然后提交表单来进行登录 通过观察分析网页html源码来找到form表单标签并且找到相关的提交参数。

经过我的分析,我用F12看了一下抓包数据,是没有发现post数据的(大家可以自己去看一下),竟然这个行不通,我们就直接查看源代码!

从我打箭头的地方可以看到,我们需要传送账户和密码信息的网址是http://www.renren.com/PLogin.do ,然后我们需要传送两个参数email和password。

当我们提交这两个参数过去时,如果登录成功会返回一个登录成功界面的源代码,我们就通过这个源代码来判断是否登录成功!

3

分析完啦,开始写代码!

前面的创建爬虫项目和文件等操作我就不多提了,不会的朋友可以去看我前面写的文章。

我先直接甩代码给大家了,老规矩,解释写在代码注释里了!

loginrr.py:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request,FormRequest

class LoginrrSpider(scrapy.Spider):
    name = 'loginrr'
    allowed_domains = ['renren.com']
    start_urls = ['http://renren.com/']
    headers = {
        'User-Agent':
            'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }

    # 这里我们先编写start_requests方法(会首先执行)
    def start_requests(self):
        # 首先访问一遍登录页面(在这里我们可以监测有无验证码,若有则需要添加验证码字段,若无则不需要)
        # 然后回调parse方法
        # 设置meta参数,将cookiejar设置为1,表示cookjar开启
        return [Request("http://www.renren.com/PLogin.do", meta={"cookiejar": 1}, callback=self.parse)]

    def parse(self, response):
        # 需要发送的表单,这次没有验证码
        data = {
            # 这里输入你们自己的账号密码
            'email': 'xxxxxx',
            'password': 'xxxxxxxx'
        }
        print("正在登陆...")
        # 通过 FormRequest.from_response方法来进行登录
        return [FormRequest.from_response(response,
                                          # 设置cookie信息
                                          meta={"cookiejar": response.meta["cookiejar"]},
                                          headers=self.headers,
                                          formdata=data,
                                          # 回调到next方法
                                          callback=self.next,
                                          )]

    def next(self, response):
        # 打印登录成功后的界面源代码
        print(response.body)

大家需要注意,在运行之间需要设置setting.py文件,将ROBOTSTXT_OBEY 设置为 False(具体原因,在前面的文章中了)

运行结果:

其实用scrapy框架写登录网站的代码还是比较容易的,但是如果有验证码了,怎么办呢?我下一篇爬虫系列文章就会给大家说说如何去破解登录界面的验证码问题!

4

结尾

相信今天的文章十分的轻松简单,但是大家还是得动手写一写,下一篇爬虫文章咱们来玩玩带验证码的网站,希望大家持续关注!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档