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

  • 相关阅读:
    二叉搜索树
    稀疏图(邻接链表),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)
    稠密图(邻接矩阵),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)
    图算法模版
    图算法(邻接矩阵)
    win764位安装DataFactory出现的问题
    使用SQL SERVER需要注意的一些细节
    索引维护存储过程(作业调用)
    收缩日志文件夹
    查看数据库资源被占情况(锁)
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586335.html
Copyright © 2011-2022 走看看