2025年6月4日 星期三 乙巳(蛇)年 三月初八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:01-22来源:作者:点击数:24

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门