python获取⽹页标题_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 = de('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 = 'www.baidu'
html = urllib.urlopen(url).read()
new_html = utf8_transfer(html)
try:
get_title_xpath(new_html)
get_title(new_html)
url编码和utf8区别except Exception, e:
print e
下⾯是结果:
百度⼀下,你就知道
百度⼀下,你就知道
简单的⼩实践,继续学习,欢迎交流。
以上这篇python抽取指定url页⾯的title⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论