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列表操作实例
Jan 14 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
分析Python中解析构建数据知识
Jan 20 Python
PyQt5每天必学之事件与信号
Apr 20 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
python requests post多层字典的方法
Dec 27 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
python flask框架实现重定向功能示例
Jul 02 Python
django最快程序开发流程详解
Jul 19 Python
Python绘制热力图示例
Sep 27 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 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格式化电话号码的方法
2015/04/24 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
企业百日安全活动总结
2015/05/07 职场文书
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python