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登录QQ邮箱发信的实现代码
Feb 10 Python
Python Property属性的2种用法
Jun 21 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
Scrapy的简单使用教程
Oct 24 Python
python执行使用shell命令方法分享
Nov 08 Python
python web基础之加载静态文件实例
Mar 20 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
python实现图片彩色转化为素描
Jan 15 Python
简单了解python关系(比较)运算符
Jul 08 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
Django框架之路由用法
Jun 10 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文件上传(实例)
2013/10/27 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
PHP实现倒计时功能
2020/11/16 PHP
img的onload的另类用法
2008/01/10 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
python无序链表删除重复项的方法
2020/01/17 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
keras的三种模型实现与区别说明
2020/07/03 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
规划编制实施方案
2014/03/15 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
运动会方队口号
2014/06/07 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
初中家长意见
2015/06/03 职场文书
淮海战役观后感
2015/06/11 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
Python多线程 Queue 模块常见用法
2021/07/04 Python