• Scrapy框架(四)常用的类概述


    目录

    Spider类分析

    Request对象

     Response对象

    案例


    Spider类分析

    成员变量和成员方法:
    •  name:爬虫的名字
    •  allowed_domins:域名限制
    •  start_urls:开始URL
    •  custom_settings: ⼀个字典 专属于本spider的配置 这个配置覆盖项⽬全局配置,配置需要在初始化前更新,定义类变量,可以更新请求头。
    • start_requests(self):可以重新定义开始发送的请求。(翻页使用)

    Request对象

    • url:请求的⽹址
    • callback:回调函数
    •  method:请求⽅法 默认get
    •  headers: 请求头
    • body:请求主体
    •  cookies: 携带记录的信息
    •  meta:携带额外参数
    •  priority:请求优先级
    •  dont_filter: reqest不去重 设置True
    •  errback:错误处理⽅法
    •  flags: 请求的标志
    •  cb_kwargs:回调⽅法的额外参数
    基本使用
    1. import scrapy
    2. from my_scrapy.items import MyScrapyItem
    3. from fake_useragent import UserAgent
    4. class SpiderSpider(scrapy.Spider):
    5. # 爬虫名称
    6. name = 'spider'
    7. # 域名限制,允许爬取的范围
    8. # allowed_domains = ['https://quotes.toscrape.com/']
    9. base_url = 'https://quotes.toscrape.com/page/{}/'
    10. # 初始请求的页面
    11. start_urls = ['https://quotes.toscrape.com/']
    12. headers = [{'user-agent': UserAgent().random}]
    13. cookies = {'name': 'zqh'}
    14. def start_request(self):
    15. for page in range(1, 6):
    16. url = self.base_url.format(page)
    17. yield scrapy.Request(url=url, callback=self.parse, headers=self.headers, cookies=self.cookies)
    18. def parse(self, response):
    19. # text = response.text
    20. quotes = response.xpath('//div[@class="quote"]')
    21. for quote in quotes:
    22. # 旧方法 get()为新方法
    23. # text = quote.xpath('./span[@class = "text"]/text()').extract_first()
    24. # 实例化对象
    25. item = MyScrapyItem()
    26. # 利用xpth进行爬取
    27. text = quote.xpath('./span[@class = "text"]/text()').get()
    28. author = quote.xpath('.//small[@class="author"]/text()').get()
    29. Tags = quote.xpath('.//a[@class="tag"]/text()').getall()
    30. item['text'] = text
    31. item['author'] = author
    32. item['Tag'] = Tags
    33. # 迭代出去
    34. yield item
    35. # 简洁的拼接
    36. # yield from response.follow_all(response.css('.pager .next a::attr("href")'), callback=self.parse)
    补充: POST 可以用 FormRequest 或者JsonRequest方法

     Response对象

    Response对象是⻚源代码结果,但是注意是bytes类型的。url, 该⽅法处理后返回的是绝对url https://www.baidu.com + 3page/1/ = https://www.baidu.com /page/1/法,和直接构 造Request不同的是,该⽅法接受的url可以是相对url,不需要 ⼀定是绝对url。
    • url
    •  status:状态码
    •  headers
    • request:
    •  body:Response Body 通常指的就是访问⽹⻚后得到的⽹
    • certicate:通过代表⼀个SSL证书对象
    •  ip_address:代表服务器地址
    •  urljoin: 是对url的⼀个处理⽅法,可以传⼊当前⻚⾯的相对
    •  follow/follow_all:是⼀个根据url来⽣成后续Request的⽅
    •  text
    •  encoding
    •  selector
    •  xpath()
    • css()
    •  json(): 2.2以后版本更新的⽅法 直接将text属性转为json对

    腾讯招聘案例

  • 相关阅读:
    Excel_VBA编程
    搜索引擎ElasticSearch分布式搜索和分析引擎学习,SpringBoot整合ES个人心得
    SQL Server 2016(分离和附加数据库)
    @vue/cli4--使用命令创建项目--方法/实例
    2022年100道最新软件测试面试题,常见面试题及答案汇总
    迅为RK3399开发板Ubuntu系统交叉编译Qt-命令行交叉编译Qt工程
    Java核心知识:java集合之Map集合
    大数据算法系列11:线性规划
    io_uring异步io简介
    YOLOV7详细解读(三)技术要点归纳
  • 原文地址:https://blog.csdn.net/qq_51179608/article/details/125511437