zoukankan      html  css  js  c++  java
  • python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    一 Scrapy的post请求的实现

    在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对start_urls列表中的url发请求。

     def start_requests(self):
            for u in self.start_urls:
               yield scrapy.Request(url=u,callback=self.parse)
    
    注意 该方法的默认是对起始的url发起get请求,想法post请求,则需要重写这个方法。

    需求 对百度翻译进行post请求的获取

    import scrapy
    #发送post请求   这里的post请求没有实际的应用  直接使用request来发送post请求比较简单
    #需求 通过百度翻译中的搜索 也就是post请求  这里搜索的内容是dog
    class PostSpider(scrapy.Spider):
        name = 'post'
        # allowed_domains = ['www.xxx.com']
        start_urls = ['https://fanyi.baidu.com/sug']
    
        #这是父类中的方法  start_urls被封装到这里面来
        def start_requests(self):
            #注意 这是原先的
            # for url in self.start_urls:
            #     #直接发送get请求
            #     # yield scrapy.Request(url=url,callback=self.parse)
            data ={
                'kw':'dog'
            }
    
            #重写父类的方法start_urls
            for url in self.start_urls:
                #直接发送get请求
                yield scrapy.FormRequest(url=url,formdata=data,callback=self.parse)
    
    
        def parse(self, response):
            #这里拿到的是一个json  而不是源码 不需要使用response.xpath
            print(response.text)
    
    

    执行即可

    二 五大核心组件的工作流程

    img

    (1)引擎(Scrapy Engine)

    用来处理整个系统的数据流,触发事务(框架的核心)

    (2)调度器(Scheduler)

    用来接收引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回.由它来决定下一个要抓取的网址是什么, 同时去除重复的网址

    (3)下载器(Downloader)

    用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)

    (4)爬虫(Spiders)

    爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息.即所谓的实体(Item)

    (5)项目管道(Pipeline)

    负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据

  • 相关阅读:
    mysql DATE_FORMAT FROM_UNIXTIME 的区别
    thinkphp按日期(天)统计数据
    ThinkPHP5 (mySQL) 统计各个时间段内的订单量
    转:mysql按时间统计数据,没有数据的时候自动补充0
    SQL的各种连接Join详解
    查询近7天,近1个月,近3个月每天的数据量,查询近一年每个月的数据量
    MySQL 如何生成日期表
    MySQL 生成日期表
    linux达人养成计划学习笔记(一)——命令基本格式及文件处理命令
    rviz学习笔记(二)——Markers: Points and Lines (C++) 点和线
  • 原文地址:https://www.cnblogs.com/mlhz/p/10473284.html
Copyright © 2011-2022 走看看