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 socket 超时设置 errno 10054
Jul 01 Python
朴素贝叶斯算法的python实现方法
Nov 18 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
Python Nose框架编写测试用例方法
Oct 26 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
python通过zabbix api获取主机
Sep 17 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
微信公众号token验证失败解决方案
Jul 22 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
python访问hdfs的操作
Jun 06 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
web前端开发也需要日志
2010/12/09 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
python自动生成证件号的方法示例
2021/01/14 Python
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
岗位职责的定义
2013/11/10 职场文书
高一自我鉴定
2013/12/17 职场文书
银行办理业务介绍信
2014/01/18 职场文书
公司授权委托书范本
2014/04/03 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
地道战观后感500字
2015/06/04 职场文书
军训结束新闻稿
2015/07/17 职场文书