c爬虫抓取网页数据(imarowadtencc语言treefindall抓取国家面积数据的方法-苏州安嘉)
优采云 发布时间: 2022-04-15 06:09c爬虫抓取网页数据(imarowadtencc语言treefindall抓取国家面积数据的方法-苏州安嘉)
标签: imarowadtencc 语言 treefindall 将是新版本
下面我们将介绍三种抓取网页数据的方法,首先是正则表达式,然后是流行的 BeautifulSoup 模块,最后是强大的 lxml 模块。
1. 正则表达式
? 如果您是正则表达式的新手,或者需要一些提示,请查看正则表达式 HOWTO 以获得完整的介绍。
?当我们使用正则表达式抓取国家地区数据时,我们首先尝试匹配元素中的内容,像这样:
>>> import re
>>> import urllib2
>>> url = ‘http://example.webscraping.com/view/United-Kingdom-239‘
>>> html = urllib2.urlopen(url).read()
>>> re.findall(‘(.*?)‘, html)
[‘
‘, ‘244,820 square kilometres‘, ‘62,348,447‘, ‘GB‘, ‘United Kingdom‘, ‘London‘, ‘EU‘, ‘.uk‘, ‘GBP‘, ‘Pound‘, ‘44‘, ‘@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA‘, ‘^(([A-Z]\\d{2}[A-Z]{2})|([A-Z]\\d{3}[A-Z]{2})|([A-Z]{2}\\d{2}[A-Z]{2})|([A-Z]{2}\\d{3}[A-Z]{2})|([A-Z]\\d[A-Z]\\d[A-Z]{2})|([A-Z]{2}\\d[A-Z]\\d[A-Z]{2})|(GIR0AA))$‘, ‘en-GB,cy-GB,gd‘, ‘IE ‘]>>>
? 从以上结果可以看出,<td class=”w2p_fw” > 标签用于多个国家属性。要隔离 area 属性,我们只需选择其中的第二个元素,如下所示:
>>> re.findall(‘(.*?)‘, html)[1]
‘244,820 square kilometres‘
• 虽然这个方案现在可用,但如果页面发生变化,它很可能会失败。例如,该表已更改为删除第二行中的土地面积数据。如果我们现在只抓取数据,我们可以忽略这种未来可能发生的变化。但是,如果我们以后想再次获取这些数据,我们需要一个更健壮的解决方案,尽可能避免这种布局更改的影响。为了使正则表达式更加健壮,我们也可以添加它的父元素 <tr>。由于元素具有 ID 属性,因此它应该是唯一的。
>>> re.findall('Area: (.*?)', html)['244820平方公里'] Python爬虫三种网络爬取方式的性能对比