• 爬虫学习 -- day3


    • selector (scrapy 选择器)

     .get() 是返回匹配的第一项

    .getall()返回包含所有结果的列表

     非标准的伪元素:

    ::text    文本节点

    ::attr(name)   选择属性值 ,其中name是想要值得属性得名称

     

    实例:

     response.xpath('//title/text()').get()

    response.xpath('//div[@id="images"]/a/text()').get() 

    或者

    response.xpath('//div[@id="images"]').css('a::text').get()     //获取内容

     response.xpath('//div[@id="images"]').css('img::attr(src)').get()   //获取属性

    假设只想要 My image 可以再添加正则 

     用 re_first 获得第一个

    • spider

    可再settings.py里面设置请求头,这样就可以带 UA或者cookie访问

    start_requests(self)默认是用GET方法请求网站,如果想改为POST请求,需要在spider处设置

     callback  默认回调函数是   self.parse

    •  Item与Pipeline

     

    当Item被spider抓取后,它被发送到Item管道(Item pipeline),它通过顺序执行的几个组件来处理Item。

    每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。

     

    以下是item pipeline的一些典型应用:

    • 清理HTML数据
    • 验证爬取的数据(检查item包含某些字段)
    • 查重(并丢弃)
    • 将爬取结果保存到数据库中

    注意 pipeLine中的逻辑 正确则返回Item 如果错误返回的是 DropItem

     

    process_item(self, item, spider)

    每个 Item Pipeline 组件都会调用此方法。该方法必须:返回一个带数据的dict,或是返回一个 Item(或任何后代类)对象,或是返回一个 Twisted Deferred 或者抛出 DropItem 异常。被丢弃的item不再被之后的其他pipeline组件处理。

    参数:

    • item (Item 对象或者一个dict) – 被爬取的item
    • spider (Spider 对象) – 爬取该item的spider

    另外,它们还可以实现以下方法:

    open_spider(self, spider)

    当spider被开启时,这个方法被调用。

    参数:

    • spider (Spider 对象) – 被开启的spider

    close_spider(self, spider)

    当spider被关闭时,这个方法被调用

    参数:

    • spider (Spider 对象) – 被关闭的spider

    from_crawler(cls, crawler)

    如果存在,则调用此类方法以从 Crawler 创建pipeline实例。它必须返回一个新的pipeline实例。 Crawler对象提供对所有Scrapy核心组件(如settings 和 signals)的访问;它是pipeline访问它们并将其功能挂钩到Scrapy中的一种方法。

    参数:

    • crawler(Crawler 对象) - 使用此pipeline的crawler

    实例很多,在官方文档看吧!   

    今天没有实例,另外 middlewears.py文件好像是和代理有关,后面遇到再学吧,下一天弄两例实例,实例学起来是最快的。

  • 相关阅读:
    POJ 数论入门
    2022初级会计实务
    Boot++:后端验证防止重复提交
    HashMap的原理,我懂了。(未完全版本)
    【NOI Online 2022】游记
    Python中的包管理工具pip的基本使用
    yarn包管理器
    setTimeout改写
    ubuntu安装指定版本nvidia驱动、CUDA、nvidiadocker
    CVPR'22 最新132篇论文分方向整理|包含目标检测、图像处理、医学影像等28个方向
  • 原文地址:https://www.cnblogs.com/tlbjiayou/p/12618446.html
Copyright © 2020-2023  润新知