python爬虫利用正则提取指定网页信息

    xiaoxiao2022-07-12  162

    今天练习了一下正则表达式,从结构比较复杂的html代码中,提取出想要的信息

    html = ''' <div id="songs-list"> <h2 class="title">流行金曲</h2> <p class = "introduction">经典歌曲列表</p> <ul id="list" class="list-group"> <li data-view="2">一路上有你</li> <li data-view="7"> <a href="/2.mp3" singer="任贤齐">沧海一声笑</a> </li> <li data-view="4" class="active"> <a href="/3.mp3" singer="齐秦">往事随风</a> </li> <li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li> <li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li> <li data-view="5"> <a href="/6.mp3" singer="邓丽君"><i class="fa fa-user"></i>但愿人长久</a> </li> </ul> </div> '''

    代码虽然不多,但是里面嵌套关系相对复杂,很具有代表性,所以拿出来与大家分享一下。同时也为自己在爬虫的路上,留下一些笔记,以供日后查阅。

    import re results = re.findall('<li.*?>.*?(.*?<a.*?singer=".*?">)?(<i.*?></i>)?(.*?)(</a>.*?)?</li>',html,re.S) # print(results) for result in results: print(result[2])

    这个正则看上去是不是一脸懵逼? 但是返回的结果还是令人欣喜若狂的:

    沧海一声笑 往事随风 光辉岁月 记事本 但愿人长久

    是不是提取的挺干净的? 好了,记录到此,我表示:正则真的是很苦逼的,很烧脑的表达式。勤加练习,一定可以成为爬虫高手! 加油!

    最新回复(0)