[python]常⽤正则表达式爬取⽹页信息及分析HTML标签总结
常⽤正则表达式爬取⽹页信息及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>'
python正则表达式爬虫
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="www.baidu/articles/zj.html" title="浙江省">浙江省主题介绍</a>
<a href="www.baidu//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
输出结果: