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


Posted in Python onMay 11, 2018

今天简单使用了一下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>.*</title>'
 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方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实用代码片段收集贴
Jun 03 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
python执行使用shell命令方法分享
Nov 08 Python
python修改txt文件中的某一项方法
Dec 29 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
python  logging日志打印过程解析
Oct 22 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 Python
python清除字符串中间空格的实例讲解
May 11 #Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
May 11 #Python
Python中的TCP socket写法示例
May 11 #Python
Python简单定义与使用二叉树示例
May 11 #Python
Python堆排序原理与实现方法详解
May 11 #Python
python 执行shell命令并将结果保存的实例
May 11 #Python
python 实现登录网页的操作方法
May 11 #Python
You might like
SONY SRF-40W电路分析
2021/03/02 无线电
PHP获取网站域名和地址的代码
2008/08/17 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
Django中使用group_by的方法
2015/05/26 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
基于python使用tibco ems代码实例
2019/12/20 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
Why we need EJB
2016/10/20 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
心理健康课教学反思
2014/02/13 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
终止劳动合同协议书
2014/10/05 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
休假证明书
2015/06/24 职场文书
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python