网页数据抓取全解析
1. 正则表达式抓取数据的局限性
在网页数据抓取中,正则表达式是一种常见的工具。例如,我们想要从网页中提取某个国家的面积数据,最初可能会使用如下正则表达式:
import re
re.findall('<tr id="places_area__row"><td class="w2p_fl"><label for="places_area" id="places_area__label">Area: </label></td><td class="w2p_fw">(.*?)</td>', html)
运行结果:
['244,820 square kilometres']
这个正则表达式能够完成任务,但当网页更新时,它很容易失效。比如表格结构改变,面积数据不再位于第二个匹配元素中。为了让正则表达式更具针对性,我们可以包含带有唯一 ID 的父元素 <tr> :
re.findall('''<tr id="places_area__row">.*?<tds*class=["']w2p_fw["']>(.*?)</td>''', html)
运行结果:
['244,820 square kilometres']
超级会员免费看
订阅专栏 解锁全文
12万+

被折叠的 条评论
为什么被折叠?



