解决爬虫响应数据的多行正则匹配问题

本文介绍了如何使用Python解析网页,从北京政府官网http://kw.beijing.gov.cn获取2020年10月的相关链接,通过正则表达式筛选出有效URL。

网站url http://kw.beijing.gov.cn/col/col736/index.html

需求:拿到该网站首页的所有的链接

分析该网站的预览可知该网站用正常方法匹配不到

接着分析该网站的响应数据,发现该文档中有我需要的数据

进入pycharm编辑代码

打印响应数据

   # TODO 第一种方法
    urls = re.findall(r'/\w+/\d+/\d+/\d+/art_736_\d+.html', str(html_cont), re.S)
    # print(urls)
    for link in urls:
        split_url = link.split('/')
        # print(split_url)
        if split_url[2] == "2020" and split_url[3] == "10":
            new_links.append("http://kw.beijing.gov.cn" + link)
    print(new_links)
    

打印输出结果

第二种方法:

# TODO 第二种方法
urls = re.findall('urls\[i\]=([\\s\\S]*?);headers\[i\]=', str(html_cont))
# print(urls)
for link in urls:
    new_link = link.replace(r'\'', '').replace(r'\'', '')
    split_url = new_link.split('/')
    # print(split_url)
    if split_url[2] == "2020" and split_url[3] == "10":
        new_links.append("http://kw.beijing.gov.cn" + new_link)
print(len(new_links))
print(new_links)

输出同样的结果。

两种方法对比而言,我更喜欢第一种方法,比较好理解

第二种方法中

[\\s\\S]* 表示匹配换行和空格

([\\s\\S]*?)表示最短匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lylg_ban

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值