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切片用法实例教程
Sep 08 Python
django实现用户登陆功能详解
Dec 11 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
python3实现域名查询和whois查询功能
Jun 21 Python
详解如何设置Python环境变量?
May 13 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
Feb 07 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 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
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
强制PHP命令行脚本单进程运行的方法
2014/04/15 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
Vue Components 数字键盘的实现
2019/09/18 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
python 读入多行数据的实例
2018/04/19 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
python实现淘宝购物系统
2019/10/25 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
猫咪家具:CatsPlay
2018/11/03 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
社区七一党员活动方案
2014/01/25 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
校园安全广播稿范文
2014/09/25 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python