[python] 常用正则表达式爬取网页信息及分析HTML标签总结

参考网址:http://blog.csdn.net/Eastmount/article/details/51082253

 

常用正则表达式爬取网页信息及HTML分析总结

1.获取<tr></tr>标签之间内容

2.获取<a href..></a>超链接之间内容

3.获取URL最后一个参数命名图片或传递参数

4.爬取网页中所有URL链接

5.爬取网页标题title两种方法

6.定位table位置并爬取属性-属性值

7.过滤<span></span>等标签

8.获取<script></script>等标签内容

9.通过replace函数过滤<br />标签

10.获取<img ../>中超链接及过滤<img>标签

 

1.获取<tr></tr>标签之间内容

该部分主要是通过正则表达式获取两个标签之间的内容,通常这种标签都是成对出现的。

开始标签如:<tr>、<th>、<td>、<a>、<table>、<div>...

后缀标签如:</tr>、</th>、</td>、</a>、</table>、</div>...

核心代码:
        res_tr = r'<tr>(.*?)</tr>'
        m_tr =  re.findall(res_tr,language,re.S|re.M)

例子:

import re

language = ''''<tr><th>性別:</th><td>男</td></tr>'''
# 正则表达式获取<tr></tr>之间内容
res_tr = r'<tr>(.*?)</tr>'
m_tr = re.findall(res_tr, language, re.S | re.M)
for line in m_tr:
    print line
    # 获取表格第一列th 属性
   
res_th = r'<th>(.*?)</th>'
   
m_th = re.findall(res_th, line, re.S | re.M)
    for mm in m_th:
        print unicode(mm, 'utf-8'),  # unicode防止乱
    # 获取表格第二列td 属性值
   
res_td = r'<td>(.*?)</td>'
   
m_td = re.findall(res_td, line, re.S | re.M)
    for nn in m_td:
        print unicode(nn, 'utf-8')

输出结果:

 

2.获取超链接<a href=..></a>之间内容

 通常在使用正则表达式时,需要分析网页链接,获取URL或网页内容。核心代码如下:
        res = r'<a .*?>(.*?)</a>'
        mm =  re.findall(res, content, re.S|re.M)

        res_url=r'href="(.*?)"'

例子:

content = ''''' 
<td>
<a href="https://www.baidu.com/articles/zj.html" title="浙江省">浙江省主题介绍</a>
<a href="https://www.baidu.com//articles/gz.html" title="贵州省">贵州省主题介绍</a>
</td>
'''

# 获取<a href></a>之间的内容
print u'获取链接文本内容:'
res = r'<a .*?>(.*?)</a>'
mm = re.findall(res, content, re.S | re.M)
for value in mm:
print value

# 获取所有<a href></a>链接所有内容
print u'\n获取完整链接内容:'
urls = re.findall(r"<a.*?href=.*?</a>", content, re.I | re.S | re.M)
for i in urls:
print i

# 获取<a href></a>中的URL
print u'\n获取链接中URL:'
#res_url = r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" 此代码是没有读懂,下面换了一种写法
res_url=r'href="(.*?)"'
link = re.findall(res_url, content, re.I | re.S | re.M)
for url in link:
print url

输出结果:

 



      

 

posted @ 2017-12-07 20:52  小糊涂也学要编程  阅读(19901)  评论(2编辑  收藏  举报