• 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方法就是小编分享给大家的全部内容了,希望能给大家一个参考

  • 相关阅读:
    开启、关闭ubuntu防火墙
    python str byte 互转
    Java 获取系统cpu 内存
    Nginx 针对上游服务器缓存
    Nginx 返回响应过滤响应内容
    Nginx 如何处理上游响应的数据
    Linux 用户和用户组管理
    Linux 文件与目录管理
    Linux 文件与目录管理
    Linux 文件基本属性
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586335.html
Copyright © 2020-2023  润新知