zoukankan      html  css  js  c++  java
  • 爬虫学习 -- 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文件好像是和代理有关,后面遇到再学吧,下一天弄两例实例,实例学起来是最快的。

  • 相关阅读:
    一篇笔记整理JVM工作原理
    深入理解java异常处理机制
    Javaee----重新回顾servlet
    dubbo框架----探索-大型系统架构设计(图解)
    Java 中浮点数---------BigDecimal和double(初探)
    dubbo框架----初探索-配置
    ConcurrentHashMap-----不安全线程hashmap-安全线程-hashtable
    Maven Eclipse (m2e) SCM connector for subclipse 1.10 (svn 1.8) 无法检测
    从svn检出项目---------不是web项目
    Java当中的内存分配以及值传递问题内存解析
  • 原文地址:https://www.cnblogs.com/tlbjiayou/p/12618446.html
Copyright © 2011-2022 走看看