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 相关文章推荐
python3 图片referer防盗链的实现方法
Mar 12 Python
python实现朴素贝叶斯分类器
Mar 28 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
python3使用matplotlib绘制条形图
Mar 25 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
python实现低通滤波器代码
Feb 26 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
Python使用lambda抛出异常实现方法解析
Aug 20 Python
Python re.sub 反向引用的实现
Jul 07 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
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
又一个php 分页类实现代码
2009/12/03 PHP
ucenter通信原理分析
2015/01/09 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
JS 对象介绍
2010/01/20 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
Linux下为不同版本python安装第三方库
2016/08/31 Python
python使用arcpy.mapping模块批量出图
2017/03/06 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
pandas数据处理进阶详解
2019/10/11 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
50道外企软件测试面试题
2014/08/18 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
工作中的自我评价如何写好
2013/10/28 职场文书
社团文化节策划书
2014/02/01 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
七年级数学教学反思
2016/02/17 职场文书