• python抽取指定url页面的title方法


    python抽取指定url页面的title方法

    今天简单使用了一下python的re模块和lxml模块,分别利用的它们提供的正则表达式和xpath来解析页面源码从中提取所需的title,xpath在完成这样的小任务上效率非常好,在这里之所以又使用了一下正则表达式是因为xpath在处理一些特殊的页面的时候会出现乱码的情况,当然这不是xpath的原因,而是页面本身编码,跟utf-8转码之间有冲突所致,

    这里看代码:    
    # !/usr/bin/python
    #-*-coding:utf-8-*-
    '''
    功能:抽取指定url的页面内容中的title
    '''
    import re
    import chardet
    import urllib
    from lxml import etree
    def utf8_transfer(strs):
     '''
     utf8编码转换
     '''
     try:
      if isinstance(strs, unicode):
       strs = strs.encode('utf-8')
      elif chardet.detect(strs)['encoding'] == 'GB2312':
       strs = strs.decode("gb2312", 'ignore').encode('utf-8')
      elif chardet.detect(strs)['encoding'] == 'utf-8':
       strs = strs.decode('utf-8', 'ignore').encode('utf-8')
     except Exception, e:
      print 'utf8_transfer error', strs, e
     return strs
    def get_title_xpath(Html):
     '''
     用xpath抽取网页Title
     '''
     Html = utf8_transfer(Html)
     Html_encoding = chardet.detect(Html)['encoding']
     page = etree.HTML(Html, parser=etree.HTMLParser(encoding=Html_encoding))
     title = page.xpath('/html/head/title/text()')
     try:
      title = title[0].strip()
     except IndexError:
      print 'Nothing'
     print title
    def get_title(Html):
     '''
     用re抽取网页Title
     '''
     Html = utf8_transfer(Html)
     compile_rule = ur''
     title_list = re.findall(compile_rule, Html)
     if title_list == []:
      title = ''
     else:
      title = title_list[0][7:-8]
     print title
    if __name__ == '__main__':
        url = 'http://www.baidu.com'
        html = urllib.urlopen(url).read()
        new_html = utf8_transfer(html)
        try:
            get_title_xpath(new_html)
            get_title(new_html)
        except Exception, e:
            print e
    下面是结果:
    百度一下,你就知道
    百度一下,你就知道
    简单的小实践,继续学习,欢迎交流。
    以上这篇python抽取指定url页面的title方法就是小编分享给大家的全部内容了,希望能给大家一个参考

  • 相关阅读:
    Ural 1966 Cycling Roads
    SQL Server 2008 安装(lpt亲测)
    cf Round#273 Div.2
    poj 2318 TOYS
    计算几何好模板
    ❤Friends
    限制pyqt5应用程序 只允许打开一次
    pyqt5 菜单栏+信息提示框
    Android Linux deploy
    system分区解锁
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586335.html
Copyright © 2020-2023  润新知