python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结
这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法。它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~
当然如果会Selenium基于自动化测试爬虫、BeautifulSoup分析网页DOM节点,这就更方便了,但本文更多的是介绍基于正则的底层爬取分析。
涉及内容如下:
常用正则表达式爬取网页信息及HTML分析总结
1.获取标签之间内容
2.获取超链接之间内容
3.获取URL最后一个参数命名图片或传递参数
4.爬取网页中所有URL链接
5.爬取网页标题title两种方法
6.定位table位置并爬取属性-属性值
7.过滤等标签
8.获取' m_script = re.findall(html_script,content,re.S|re.M) for script in m_script: res_original = r''original':'(.*?)'' #原图 m_original = re.findall(res_original,script) for pic_url in m_original: print pic_url filename = os.path.basename(pic_url) #去掉目录路径,返回文件名 urllib.urlretrieve(pic_url, 'E:\\'+filename) #下载图片
运行结果如下图所示,同时下载图片至E盘。
参考文章:
https://blog.csdn.net/eastmount/article/details/44492787
9.通过replace过滤
标签
在获取值过程中,通常会存
标签,它表示HTML换行的意思。常用的方法可以通过标签''进行过滤,但是这里我想讲述的是一种Python常用的过滤方法,在处理中文乱码或一些特殊字符时,可以使用函数replace过滤掉这些字符。核心代码如下:
if '
' in value:
value = value.replace('
','') #过滤该标签
value = value.replace('\n',' ') #换行空格替代 否则总换行
例如过滤前后的例子:
達洪阿 異名: (字) 厚菴
(諡) 武壯
(勇號) 阿克達春巴圖魯
達洪阿 異名: (字) 厚菴 (諡) 武壯 (勇號) 阿克達春巴圖魯
10.获取中超链接及过滤标签
在获取值属性值过程中,可能在分析table/tr/th/td标签后,仍然存在图片链接,此时在获取文字内容时,你可能需要过滤掉这些标签。这里采用的方法如下:
value = re.sub(']+>','', value)
例如:
#encoding:utf-8import osimport revalue = '''table class='infobox' style='width: 21em; text-align: left;' cellpadding='3'>tr bgcolor='#CDDBE8'>th colspan='2'>center class='role'>b>中華民國政治人士b>br />center>th>tr>tr>th>性別:th>td>男td>tr>tr>th>政黨:th>td>span class='org'>img alt='中國國民黨' src='../../../../images/Kuomintang.svg.png' width='19' height='19' border='0' />a href='../../../../articles/%8B%E6%B0%91%E9%BB%A8.html' title='中國國民黨'>中國國民黨a>span>td>tr>table>'''value = re.sub('[^>]+>','', value) #过滤HTML标签print value
输出如下:
>>> 中華民國政治人士性別:男政黨:中國國民黨>>>
虽然仅仅包括汉字,但是中间会存在换行,需要过滤
即可:
if '
' in value: value = value.replace('
','') value = value.replace('\n',' ')value = re.sub(']+>','', value) #过滤HTML标签print value#输出仅仅一行如下:#中華民國政治人士 性別: 男 政黨: 中國國民黨
下面讲述第二部分,通过正则表达式获取中的src超链接,代码如下:
test = '''
'''print re.findall('src='(.*?)'',test)
输出如下所示:
>>> ['../images/Kuomintang.png']>>>
findall函数返回的总是正则表达式在字符串中所有匹配结果的列表,即findall中返回列表中每个元素包含的信息。
最后希望文章对你有所帮助,后面如果遇到新的相关知识,我也会即使的更新添加的。— END —
python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结相关推荐
- Python正则匹配HTML,python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结...
这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...
- python正则匹配任意字符_Python 匹配任意字符(包括换行符)的正则表达式写法...
Python 匹配任意字符(包括换行符)的正则表达式写法 想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现 ...
- python正则匹配ip地址_Python正则表达式匹配和提取IP地址
Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...
- python 正则 匹配任意字符串_python中正则匹配
写代码时候,不管是爬虫,还是获取某些特定的资源,我们需要写正则表达式. 因为不常用,有些语法生疏.有时明明觉得自己的语法可以,可就是不行. 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之 ...
- python正则匹配ip地址_Python正则表达式匹配ip地址实例
Python正则表达式匹配ip地址实例 更新时间:2014年10月09日 11:22:51 投稿:shichen2014 这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了 ...
- python正则匹配任意字符_Python 正则表达式 匹配任意字符的写法
.(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符>>> >>> r=re.compile(r'.*') >>> ...
- python正则匹配固定汉字_Python用正则表达式匹配汉字
原博文 2019-11-07 19:54 − #### Python用正则表达式匹配汉字 ##### 匹配多个汉字,不包括空格 ```python import re res = re.match(r ...
- python正则匹配ip地址_python 正则表达式匹配IP地址
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...
- python正则匹配任意字符_Python 正则表达式 匹配任意字符
.(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符 >>> >>> r=re.compile(r'.*') >>> ...
最新文章
- 一个经典例子让你彻彻底底理解java回调机制
- vue vue-router vuex element-ui axios 的学习笔记(七)完善登录注册
- 「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索
- 存储Image到XML、显示Image
- Vim高手,从来不用鼠标
- Java并发编程的基础-其他的线程复位
- java中的char可以存储汉字吗?
- Azure开发者任务之一:解决Azure Storage Emulator初始化失败
- 修改Linux启动后的默认颜色,更改linux目录的默认颜色(我选择了Yellow)
- SpringBoot集成MyBatisPlus
- jsp java 交互_JSP-Servlet入门4之JSP数据交互
- 详解Python序列解包(4)
- HDU 3081Marriage Match II(二分法+并检查集合+网络流量的最大流量)
- 《团队软件过程(修订版)》—第1章1.5节TSPi过程
- 我辞去了年收入50万的工作,去做在线教育的老师
- java xml格式化_使用java将xml格式化
- Echarts世界地图的国家名称中文化
- 如何使用支付宝支付接口
- js 获取上下文后面的路径_通过在数据后面显示上下文来可视化公众意见
- LeetCode - 354 俄罗斯套娃信封问题
热门文章
- python的pip_Python3中安装pip3
- android gridview 数据绑定,Android GridView数据绑定
- qt定时器暂停与重新开始_手把手教你写个小程序定时器管理库
- MyBatis Plus EntityWarpper参数的介绍
- @MapperScan和@ComponentScan的区别
- 解决系统之间Session不共享问题的几种方案
- 启动的时候闪退_APP突然闪退怎么办?学会这五个妙招比换手机实用,看完望周知...
- 二陈丸配什么吃不上火_燃气灶打不着火是什么原因 煤气灶打着火松手就灭解决方法【详解】...
- mouseover和mouseout多次触发解决方法(兼容ie和firefox)(转)
- 分治法求两个等长升序序列的联合中位数