这篇文章主要是介绍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网页标签分析总结相关推荐

  1. Python正则匹配HTML,python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结...

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  2. python正则匹配任意字符_Python 匹配任意字符(包括换行符)的正则表达式写法...

    Python 匹配任意字符(包括换行符)的正则表达式写法 想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现 ...

  3. python正则匹配ip地址_Python正则表达式匹配和提取IP地址

    Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...

  4. python 正则 匹配任意字符串_python中正则匹配

    写代码时候,不管是爬虫,还是获取某些特定的资源,我们需要写正则表达式. 因为不常用,有些语法生疏.有时明明觉得自己的语法可以,可就是不行. 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之 ...

  5. python正则匹配ip地址_Python正则表达式匹配ip地址实例

    Python正则表达式匹配ip地址实例 更新时间:2014年10月09日 11:22:51 投稿:shichen2014 这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了 ...

  6. python正则匹配任意字符_Python 正则表达式 匹配任意字符的写法

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符>>> >>> r=re.compile(r'.*') >>> ...

  7. python正则匹配固定汉字_Python用正则表达式匹配汉字

    原博文 2019-11-07 19:54 − #### Python用正则表达式匹配汉字 ##### 匹配多个汉字,不包括空格 ```python import re res = re.match(r ...

  8. python正则匹配ip地址_python 正则表达式匹配IP地址

    一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...

  9. python正则匹配任意字符_Python 正则表达式 匹配任意字符

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符 >>> >>> r=re.compile(r'.*') >>> ...

最新文章

  1. 一个经典例子让你彻彻底底理解java回调机制
  2. vue vue-router vuex element-ui axios 的学习笔记(七)完善登录注册
  3. 「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索
  4. 存储Image到XML、显示Image
  5. Vim高手,从来不用鼠标
  6. Java并发编程的基础-其他的线程复位
  7. java中的char可以存储汉字吗?
  8. Azure开发者任务之一:解决Azure Storage Emulator初始化失败
  9. 修改Linux启动后的默认颜色,更改linux目录的默认颜色(我选择了Yellow)
  10. SpringBoot集成MyBatisPlus
  11. jsp java 交互_JSP-Servlet入门4之JSP数据交互
  12. 详解Python序列解包(4)
  13. HDU 3081Marriage Match II(二分法+并检查集合+网络流量的最大流量)
  14. 《团队软件过程(修订版)》—第1章1.5节TSPi过程
  15. 我辞去了年收入50万的工作,去做在线教育的老师
  16. java xml格式化_使用java将xml格式化
  17. Echarts世界地图的国家名称中文化
  18. 如何使用支付宝支付接口
  19. js 获取上下文后面的路径_通过在数据后面显示上下文来可视化公众意见
  20. LeetCode - 354 俄罗斯套娃信封问题

热门文章

  1. python的pip_Python3中安装pip3
  2. android gridview 数据绑定,Android GridView数据绑定
  3. qt定时器暂停与重新开始_手把手教你写个小程序定时器管理库
  4. MyBatis Plus EntityWarpper参数的介绍
  5. @MapperScan和@ComponentScan的区别
  6. 解决系统之间Session不共享问题的几种方案
  7. 启动的时候闪退_APP突然闪退怎么办?学会这五个妙招比换手机实用,看完望周知...
  8. 二陈丸配什么吃不上火_燃气灶打不着火是什么原因 煤气灶打着火松手就灭解决方法【详解】...
  9. mouseover和mouseout多次触发解决方法(兼容ie和firefox)(转)
  10. 分治法求两个等长升序序列的联合中位数