正则获取网页练习

本文总结了Python正则表达式在爬虫中的应用,包括抓取HTML中<tr>、<a>标签内容,提取URL参数,解析超链接,过滤HTML标签等。同时展示了如何获取网页标题、表格数据、链接URL,并提供了获取URL最后一个参数和爬取所有URL链接的示例。
摘要由CSDN通过智能技术生成

常用正则表达式爬取网页信息及分析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><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></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(mm,) #unicode防止乱
    #获取表格第二列td 属性值
    res_td = r'<td>(.*?)</td>'
    m_td = re.findall(res_td,line,re.S|re.M)
    for nn in m_td:
        print(nn)

2.获取超链接之间内容

通常在使用正则表达式时,需要分析网页链接,获取URL或网页内容
核心代码如下:

res = r'<a .*?>(.*?)</a>'
mm =  re.findall(res, content, re.S|re.M)
urls=re.findall(r"<a.*?href=.*?<\/a>", content,re.I|re.S|re.M)
import re
 
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("获取链接文本内容:")
res = r'<a .*?>(.*?)</a>'
mm = re.findall(res, content, re.S|re.M)
for value in mm:
    print(value)
#获取所有<a href></a>链接所有内容
print('\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('\n获取链接中URL:')
res_url = r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')"
link = re.findall(res_url,content,re.I|re.S|re.M)
for url in link:
    print(url)

3.获取URL最后一个参数命名图片或传递参数
通常在使用Python爬取图片过程中,会遇到图片对应的URL最后一个字段通常用于命名图片

urls = "http://i1.hoopchina.com.cn/11/BbsImg141568417848931_640*640.jpg"
values = urls.split('/')[-1]
print(values)

在使用Python获取GET方法的URL链接中,还可能存在传递参数的值。
此时获取参数方法如下:


url = 'http://localhost/test.py?a=hello&b=world'
values = url.split('?')[-1]
print(values)
for key_value in values.split('&'):
    print(key_value.split('='))

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

import re
import urllib

url = "http://www.csdn.net/"
content = urllib.urlopen(url).read()
urls = re.findall(r"<a.*?href=.*?<\/a>", content, re.I)
for url in urls:
    print(url)

link_list = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')", content)
for url in link_list:
    print(url)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值