爬虫提取信息的三种方法

爬虫信息提取的三种方法


  • 正则表达式(最复杂但效率高)

    需要的模块 :
    import re

    • 常用的方法有 :

      • re.find()
        匹配最前面一个,后面的不管
      • re.findall()
        匹配文本中所有符合的字符串,以列表返回
      • re.sub()
        替换所有匹配到的字符串
      • re.split()
        用指定的字符分割字符串
      • re.compile()
        如果你所使用的正则表达式会多次使用,可以这样进行编码,一便多次用
      • re.group()
        参数可有可无,可有多个,表示提取第几个匹配到的字符
      • re.search()
        返回匹配到的字符对象,与group结合使用
    • 注意 :

      对标签进行处理,没有标签等级划分
      re.DOTALL可以让 . 号匹配到 \n


  • beautifulsoup 效率低但简单

    1. 需要的模块
                from  bs4  import   beautifulsoup
    
    1. 寻找tr标签
        soup = beautifulsoup(html,"lxml")   #lxml可有可无
        trs = soup.fiind_all("tr")
        print("hdd")
    
    1. 寻找第二个tr标签
        tr = soup.find_all("tr",limit=2)[0]
    
    1. 寻找 class 等于 even 的 tr 标签(多个条件同理)
          trs = soup.find_all("tr",class_=even)  #注意下划线
          trs = soup.find_all("tr",attrs={"class":"even"})
    
    1. 获取所有a标签的href属性
        aas = souo.find_all("a")
        for a in aas:
            href = a["href"]
            href = a.attrs["href"]
    
    1. 获取所有文本信息
        trs = soup.find_all("tr")[1:]  
        for tr in trs:  
            tds = tr.find_all("td")  
            title = tds[0].string
    
  • lxml中xpath方法

    • 用法
      首先将请求到的文本 (text) 解析,即:
        # 一  解析当前文本
        from lxml import etree
        html = etree.HTML(text)
        # 二 解析保存的html文本(parser有时可不写)
        parser = etree.HTMLparser(encode = "utf-8")
        html = etree.parse("tencent.html",parser=parser)
    
    1. 获取所有的tr标签
       trs = html.xpath("//tr")   
         for tr in trs:
             print(etree.tostring(tr,encode="utf-8").decode("utf-8"))
    
    1. 获取第二个tr标签
        tr = html.xpath("//tr[2]")
        print(etree.tostring(tr,encode="utf-8").decode("utf-8"))
    
    1. 获取class等于even的tr标签
         trs = html.xpath("//tr[@class=even]")
            for tr in trrs:
                 print(etree.tostring(tr,encode="utf-8").decode("utf-8"))
    
    
    1. 获取a标签的href属性
      aas = html.xpath("//a/@href")
        for a in aas:
            print(etree.tostring(a,encode="utf-8").decode(utf-8")
        #也可以这样
      aas = html.xpath("//a")
        for a in aas:
            href = a.get("href")
            print(etree.tostring(a,encoding="utf-8").decode("utf-8"))
    
    1. 获取标签的文本信息

      html.xpath("//div[@href="haha"]/text()")
      
    2. 定位指定文本标签(匹配的是包括文本的标签)

      a[contains(text(),"文本")]
      

你可能感兴趣的:(python爬虫学习)