美文网首页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-----模拟登录 人人网

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