正则小记

本文介绍如何使用正则表达式从HTML中提取链接和标题等信息,并通过实例演示了正则匹配的过程及技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫   正则小记    

用正则做爬虫的三个步骤:

  1.   向请求的页面发送请求,获取源代码(静态页面)
  2. 利用正则匹配数据
  3. 将数据保存到数据库

实例:

string = """
            <html>
                <div><a href='www.baidu.com'></a></div></div></div>
                </div><title>正则</title></div>
                <html><div><a href='www.baidu1.com'></a></div>
                </div></div></div><title>正则1</title></div>
                <html><div><a href='www.baidu2.com'></a>
                </div></div></div></div><title>正则2</title></div>
                <html><div><a href='www.baidu3.com'>
                </a></div></div></div></div><title>正则3</title></div>"""

这里直接把网页HTML保存在字符串中用正则匹配

1. 用正则获取整个页面的网址(href)以及标签title中的文本内容:

             

pattern = re.compile(r"<a href='(.*?)'>.*?<title>(.*?)</title>", re.S)

               

res = re.findall(pattern, string)
print(res)

          

结果为:[('www.baidu.com', '正则'), ('www.baidu1.com', '正则1'), ('www.baidu2.com', '正则2'), ('www.baidu3.com', '正则3')]

2. 解析:.*? 非贪婪匹配  .*贪婪匹配

                  区别:string = "a12345b0000b0000b"

                        a.*?b = a12345b   (非贪婪默认取第一个a-b之间的值, 故而非贪婪)

                        a.*b = a12345b0000b0000b(贪婪有多少取多少只要在一个标签或者字符串中故而贪婪)

3. 在正则中所取的需要放在()中

4. re.S  可以将正则的搜索域不在限定在一行,而是整个HTML    全局提取所需

5.  findall()   返回的是一个列表                    






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值