zoukankan      html  css  js  c++  java
  • scrapy中使用LinkExtractor提取链接

    le = LinkExtractor(restrict_css='ul.pager li.next')
    links = le.extract_links(response)
     
    使用LinkExtractor的过程:
    1. 导入LinkExtractor,它是在scrapy中linkextractors中
    2. 创建一个Linkextractor对象,使用一个或者多个构造器参数描述提取规则,这里传递给restrict_css参数一个CSS选择器表达式。它描述了下一页链接所在的区域(在li.next下)
    3. 调用LinkExtractor对象的extract_links方法传入一个response对象,这个方法一句创建对象的时候描述的的提取规则,在这个response对象的页面中提取链接,最终返回一个列表,其中的每一个元素都是个link对象,也就是提取到的链接
    4. 由于页面中的下一页链接只有一个,因此用links[0]获取link对象,link对象的url属性就是链接页面的绝对url地址(无须在调用response.urljoin方法),用它构造request对象并再次提交

    描述提取规则

      特殊情况:

        LinkExtractors构造器的所有的参数都是有默认值的,如果构造对象的时候不传入任何参数,就会自动提取页面中的所有的链接

      LinkExtractor构造器的各个参数:

      1. allow
        1. 正则表达式或者正则表达式列表,提取绝对url和正则表达式匹配的链接,如果为空就会提取所有的链接
      2. deny
        1. 正则表达式或者正则表达式列表,与allow相反,排除绝对url与正则表达式匹配的链接
      3. allow_domains
        1. 接受一个域名或者一个域名列表,提取到指定域的链接
      4. deny_domains
        1. 接受一个域名或者一个域名列表,与allow_domains相反,排除指定域名的链接
      5. restrict_xpaths
        1. 接收一个xpath表达式或者一个xpath表达式列表,提取xpath表达式中区域下的链接
      6. restrict_css
        1. 接受一个css选择器或者css选择器列表,提取css选择器中指定区域下的链接
      7. tags
        1. 接受一个标签(字符串)或者一个标签列表,提取指定标签内的链接
      8. attrs
        1. 接收一个属性(字符串)或者一个属性列表,提取指定区域内的链,默认是['href']
      9. process_value
        1. 接收一个形如func(value)的回调函数。如果传递了该函数,LinkExtractor将会调用这个回调函数对提取的每一个链接进行处理,回调函数正常情况下应该返回一个字符串(处理结果),想要抛弃所处理的连接的时候,返回None
  • 相关阅读:
    echarts x轴文字显示不全(解决方案)
    公共文件模块include
    个人tools封装
    echart改变legend样式及分页
    【学习笔记】tensorflow图片读取
    【学习笔记】tensorflow文件读取
    《简约之美:软件设计之道》总结
    【学习笔记】tensorflow队列和线程
    【学习笔记】tensorflow实现一个简单的线性回归
    【学习笔记】tensorflow基础
  • 原文地址:https://www.cnblogs.com/tulintao/p/11703096.html
Copyright © 2011-2022 走看看