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监控网卡流量并使用graphite绘图的示例
Apr 27 Python
Django实现图片文字同时提交的方法
May 26 Python
Python中断言Assertion的一些改进方案
Oct 27 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
Linux下python3.7.0安装教程
Jul 30 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
python 设置输出图像的像素大小方法
Jul 04 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
python字符串替换re.sub()实例解析
Feb 09 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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 Smarty生成EXCEL文档的代码
2008/08/23 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
自写的一个jQuery圆角插件
2010/10/26 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
工商企业管理应届生求职信
2013/11/03 职场文书
后勤主管岗位职责
2014/03/01 职场文书
卖车协议书
2014/04/21 职场文书
工程售后服务承诺书
2014/05/21 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
社区端午节活动总结
2015/02/11 职场文书
python编程实现清理微信重复缓存文件
2021/11/01 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL