Scrapy中的选择器

bs4

步骤
  ##01.第一步:导入 bs4 库     
    from bs4 import BeautifulSoup
  ##02.第二步 创建 beautifulsoup 对象
    soup = BeautifulSoup(open('index.html'))#缺省默认的解析器"html.parser"
    soup=BeautifulSoup(response.body, "html.parser")
    BeautifulSoup("<a></p>", "lxml")
    BeautifulSoup(markup, "xml")
    BeautifulSoup(markup,  "lxml-xml")
    BeautifulSoup("<a></p>", "html5lib")
    soup=BeautifulSoup(respone.body,"html5lib",from_encoding='utf-8') ##缺省默认utf-8
    soup=BeautifulSoup(respone.body,"html5lib",from_encoding='gb2312')
  ##03.第三步-各种操作
    soup.find_all( name , attrs , recursive , text , **kwargs )
    ##find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件
    ##CSS选择器
    soup.select(),返回类型是 list
说明
    ##Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,
    ##所有对象可以归纳为4种:
    ##Tag
    soup加标签名轻松地获取这些标签的内容
    Tag,它有两个重要的属性,是 name  attrs
    tag  .content 属性可以将tag的子节点以列表的方式输
    print soup.head.contents[0]
    ##NavigableString                
    ##BeautifulSoup
    ##Comment

lxml 依托于ElementTree的选择器(seletors)

步骤
  01.引入
    from scrapy.selector import Selector
    from scrapy.http import HtmlResponse
  02. response 构造选择器--还可以以文字--在这里暂且不涉及
    response = HtmlResponse(url='http://example.com', body=body)
    sl = Selector(response=response)
  03.各种操作
    sl.xpath('//span/text()').extract()
说明
    XPath is a language for selecting nodes in HTML or XML document
    CSS   is a language for applying styles to HTML documents
    Regular expressions
       方法返回类 SelectorList 的实例的列表
        .xpath() 
            .extract()方法
            .extract_first()
        .css()
            .extract()方法
            .extract_first()
        .re()
            .re_first()     
     Xpath 语法,使用路径表达式在 XML 文档中进行导航,
      XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点  
      01. 路径表达式
        nodename    选取此节点的所有子节点。
        /           从根节点选取。
        //          从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
        .           选取当前节点。
        ..          选取当前节点的父节点。
        @           选取属性。
      02.Predicates--谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中
            /bookstore/book[last()]

参考:

Beautiful Soup 4.2.0 文档       https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
lxml - XML and HTML with Python http://lxml.de/index.html 
Selectors                       https://doc.scrapy.org/en/latest/topics/selectors.html#

blogroll

social