[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

输出结果:

 

 
 


      

 

转载于:https://www.cnblogs.com/171207xiaohutu/p/8001001.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 虫中,正则表达式是非常常用的工具。它可以帮助我们从网页中抓需要的信息,过滤掉不需要的内容,提高效率和准确性。以下是一些常用正则表达式应用场景: 1. 匹配 URL 链接:可以使用正则表达式出页面中的所有链接,便于进一步抓分析页面内容。 2. 匹配特定文本:如果我们只需要网页中某个特定文本,可以使用正则表达式来匹配并提。 3. 过滤 HTML 标签网页中的 HTML 标签对于我们的数据分析来说是无用的,可以使用正则表达式去除标签。 4. 匹配时间日期:有些网站会包含时间日期等信息,可以使用正则表达式来提这些信息Python 中可以使用 re 模块来实现正则表达式的应用。具体使用方法可以参考以下示例代码: ```python import re import requests # 抓网页内容 r = requests.get('https://www.example.com') html = r.content.decode() # 匹配 URL 链接 urls = re.findall('<a href="(.*?)".*?>.*?</a>', html) print(urls) # 匹配特定文本 text = re.search('<title>(.*?)</title>', html).group(1) print(text) # 过滤 HTML 标签 clean = re.compile('<.*?>') content = re.sub(clean, '', html) print(content) # 匹配时间日期 dates = re.findall('\d{4}-\d{2}-\d{2}', html) print(dates) ``` 上述代码演示了如何使用正则表达式网页内容并进行一些简单的数据处理。需要注意的是,在实际应用中,正则表达式应该根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值