zoukankan      html  css  js  c++  java
  • Scrapy实现多页的爬取

    1·scrapy实现多页的爬取

      

    多页爬取的思路:
            1,在start_urls中构建url的列表。逐一请求
            2,定义一个page属性,利用if判断来实现多页
            3,获取下一页实现多页,此种方式是比较灵活的。

    2  深度爬取

      

    1,深度爬取:从列表页到详情页,甚至是更后续的页面的数据的获取
    2,深度爬虫: 通常我们要爬取的数据隐藏在form表单之后, 需要越过表单进行爬取
    # 深度爬取
    访问列表页,
    从列表页获取详情页的连接
    手动发起请求并制定回调
    在回调中解析详情页的数据
    将目标数据装载在临时容器item中提交给管道
    
    # 请求传参
    1.请求如何传参: 通过meta参数
    meta是一个字典
    meta = {
        'title': title
    }
    2.取出传递的参数
    title = response.meta['title']  # 中括号里面的title要和meta字段的键对应
    # https://www.guidaye.com/dp/

    3.Item

      

    1.item是一个类
    2.item既然是一个类, 为什么能够作为一个容器呢
    3.item是如何携带着解析出来的目标数据到管道

      

    1.item是一个类
    面向对象: 
    面向过程: 
    创建一个小助手: 图纸--> 模板---> 类
    类 ---> 创建一个对象(实例化)
    类有一些方法: __kdfkd__  --> 魔术方法(双下划线方法)
        
    __init__(): 初始化方法, 帮你初始化一定信息
    __new__(): 构造方法, 在内存中为你开辟一块空间放置这个对象
    __del__()
    __str__()
    __repr__()

      

    import scrapy
    
    class GgsItem(scrapy.Item):
        # define the fields for your item here like:
        title = scrapy.Field()  # 给item类定义一个属性
        content = scrapy.Field()

      

    # 在爬虫中实例化一个item对象发生了什么:
    1.在内存中创建一个对象的空间:__new__()
    2.运行初始化方法为属性赋值或为属性赋值做准备
    3.item['title'] = title
  • 相关阅读:
    【javascript基础】之【理解JavaScript函数(函数和对象的区别和联系)】
    time
    IE6双倍边距
    【javascript基础】之【delete 运算符】
    【javascript基础】之【解剖JavaScript中的null和undefined】
    buildessential centos
    centOS restart xinetd
    g77 CentOS
    yum search package
    xos_thread
  • 原文地址:https://www.cnblogs.com/nbzyf/p/13601420.html
Copyright © 2011-2022 走看看