美文网首页python 高级码农成才之路
scrapy.FormRequest-----模拟登录 人人网

scrapy.FormRequest-----模拟登录 人人网

作者: 幼姿沫 | 来源:发表于2020-12-20 19:53 被阅读0次

request是请求网站进行爬取网页获取数据 request请求 

方法 GET POST

请求头headers

回调函数 callback  

网址 url

错误时执行的函数 errback

不同请求传递数据 meta


网页分析:

scrapy框架流程图分析如下***

爬虫spider把想要请求的网址url发给引擎engine

引擎把数据传送到调度器schedule中组成一个列表,

调度器将网址传送给下载器downloader

下载器将网址向网络请求request

Internet网络将请求护具进行分析响应之后传给爬虫spider

1.爬虫将数据传递给数据库pipelines进行数据分析传送到数据库 redis/mysql/mongodb

2.爬虫将响应过来的网址url重新发送给引擎engine和调度器schedule对网址进行分析响应传递给爬虫传送到数据处理之后进行存储

response 一般都是scrapy自动构建的 属性如下

xpath  提取具体数据和内容

text   字符串类型

body 字节码类型

encoding 编码解码格式

css  css选择器

encoding  字符串的编码和解码

meta  多个请求之间的数据连接

网页请求有post请求(参数)和get请求

首页数据请求为GET请求 不需要参数       scrapy.Request(url)

登录页面请求方法为POST 有参数需要安全性   scrapy.FormRequest(data,url)

如果初始爬虫爬取post请求网页的时候 重新构建start_requests(url)

人人网项目文件结构

renren_login.py

代码展示:

import scrapy

#如果想要安全的获取数据就要用post方法来获取form表单数据

# 所以用scrapy.FormRequest来获取表单数据进行验证并且可以方便指定表单数据

#如果在爬虫一开始就要使用post请求就要

# 重写start_requests方法进行post请求数据

#找到登陆页面均为post请求 登录页面的参数data

# formRequest form表单数据可以快捷获取

#post请求则是scrapy.FormRequest 参数为url和data

#callback 回调函数

class RenrenLoginSpider(scrapy.Spider):

name ='renren_login'

    allowed_domains = ['www.renren.com']

#开始页面为get请求 则是scrapy.Request

    start_urls = ['http://www.renren.com/']

#重写post请求 路由和数据data 用scrapy的FormRequest表单请求来获取post请求数据和内容

    def start_requests(self):

print('=====start_requests(self)=====')

login_url='http://www.renren.com/PLogin.do'

        #data是字典格式 键值对为用户名密码

        data={

'email':'18632475930',

            'password':'wangyi0.+-'

        }

#手动构造POST请求 参数1. 提交的目标地址  参数2. 提交的参数

        request=scrapy.FormRequest(login_url,formdata=data,callback=self.parse)

#将构造的post请求体数据发送出去

        yield request

def parse(self, response):

print('=====parse(self, response)=====')

with open('renren.html','w',encoding='utf-8')as f:

f.write(response.text)

print('响应内容写入到renren.html文件成功')

#登陆成功进行请求个人主页 手动构造GET请求访问个人主页

        request=scrapy.Request(url='http://www.renren.com/975549892/profile',callback=self.parse_profile)

yield request

def parse_profile(self,response):

print('=====parse_profile(self)=====')

with open('profile.html','w',encoding='utf-8')as f:

f.write(response.text)

print('响应内容写入到profile.html文件成功')

start.py 运行命令

保存数据结果如下

相关文章

  • scrapy.FormRequest-----模拟登录 人人网

    request是请求网站进行爬取网页获取数据 request请求方法 GET POST 请求头headers 回调...

  • 今日测试

    1. 实现模拟登录 模拟登录人人网,这是初始的一步,同时也是最困难的开头,很值得纪念。 网络爬虫这是我第一接触到的...

  • 用python实现模拟登录人人网

    我决定从头说起。懂的人可以快速略过前面理论看最后几张图。 web基础知识 从OSI参考模型(从低到高:物理层,数据...

  • 模拟登录之拉勾网

    接上一篇模拟登录之果壳网。果壳网的模拟登录较为简单,表单的结构不复杂,而有些网站会给密码和账号加密、再添加一些额外...

  • 特斯拉API接口 - 授权登录

    搞了一天,就是拿不下,本来想越过官网跳转浏览器形式登录,直接抓接口模拟登录,发现不行,传统的爬虫是没办法模拟登录了...

  • 模拟登录之果壳网

    模拟登录 模拟登录常用于大型数据爬取,通过模拟登录,获得网站发给用户有效的 cookies,在爬虫爬取数据时,可以...

  • Spring Security源码分析十四:Spring Soc

    社交登录又称作社会化登录(Social Login),是指网站的用户可以使用腾讯QQ、人人网、开心网、新浪微博、搜...

  • Spring Security源码分析四:Spring Soci

    社交登录又称作社会化登录(Social Login),是指网站的用户可以使用腾讯QQ、人人网、开心网、新浪微博、搜...

  • 从零搭建教务抢课系统(一)

    目录 (一)核心功能:模拟登陆(二)使用Cookie进行模拟登录(三)获取教务网选课列表(四)循环选课(五)断线重...

  • 从零搭建教务抢课系统(四)

    目录 (一)核心功能:模拟登陆(二)使用Cookie进行模拟登录(三)获取教务网选课列表(四)循环选课(五)断线重...

网友评论

    本文标题:scrapy.FormRequest-----模拟登录 人人网

    本文链接:https://www.haomeiwen.com/subject/cmlcnktx.html