学习爬虫知识a:
常用正则表达式爬取网页信息及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
输出结果: