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 第一步 hello world
Sep 25 Python
详解Python Socket网络编程
Jan 05 Python
Python模拟三级菜单效果
Sep 11 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
windows下numpy下载与安装图文教程
Apr 02 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
python binascii 进制转换实例
Jun 12 Python
OpenCV 边缘检测
Jul 10 Python
Django 请求Request的具体使用方法
Nov 11 Python
python numpy数组复制使用实例解析
Jan 10 Python
python自动从arxiv下载paper的示例代码
Dec 05 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垃圾代码优化操作代码
2010/08/05 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
php常用正则函数实例小结
2016/12/29 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
python集合用法实例分析
2015/05/30 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python Process多进程实现过程
2019/10/22 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
.net笔试题
2014/03/03 面试题
如何转换一个字符串到enum值
2014/04/12 面试题
新闻记者实习自我鉴定
2013/09/19 职场文书
造型师求职自荐信
2013/09/27 职场文书
资源环境与城市管理专业推荐信
2013/11/30 职场文书
自我查摆剖析材料
2014/10/11 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
追讨欠款律师函
2015/06/24 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
小学科学课教学反思
2016/02/23 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL