Beautiful Soup4 之table数据提取

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.
其具体的介绍及说明可以参考【文档】。
本文中,我们将用其进行网页table标签内数据的提取,主要功能步骤如下:

  • 根据URL地址获取有效HTML网页,我们可以称之为URL处理单元

    • 在这一单元,我们将使用python的urllib2库来对URL地址进行处理,有关该库的说明可以参考【文档】。
    • 我们将使用urllib2的urlopen函数处理传入的URL,如果地址正确,将获取该地址对应的HTML代码块;若地址有误,将会返回空。
    • 注:若仅对该项进行测试的话,可以通过response对象的code值是否为200进行不同的输出。
    • 该部分的代码贴出如下,要在使用之前引入urllib2库。
    import urllib2

    def download(self, url):
        response = urllib2.urlopen(url)
        if response.getcode() != 200:
            return None
        return response.read()
  • 获取网页内table标签下的数据,我们称之为数据提取单元

    • 将上一单元中获得HTML 代码作为参数(html_cont)传入该单元进行使用。在此我们将使用BeautifulSoup解析该段代码并生成一个对象,因此我们必须进行库的安装,具体方法可参考文档[Beautiful的安装]以及解析器的安装,python中有自带的解析器,当然也可以选择第三方的,下图是一些解析器的比较说明:
      Beautiful Soup4 之table数据提取_第1张图片

    • 本例中我们将使用python自带的解析器来解析HTML代码。首先生成soup对象,并进行table标签的内容获取

    from bs4 import BeautifulSoup

    def parse(self, page_url, html_cont):
        if html_cont is None:
            return None
        else:
            soup = BeautifulSoup(html_cont, 'html.parser', 
              from_encoding='utf-8')        
            self._get_new_data(page_url, soup)

    def _get_new_data(self, page_url, soup):
        title_node = soup.find('title')
        print title_node.get_text()
        table_node = soup.find_all('table')
        for table in table_node:
            print table.get_text()

至此,我们将一个网页内的table数据进行了获取显示,对于获取数据输出显示的问题,如输出编码、输出格式化等,可分别参考文档的相关部分:【输出】,【编码】。总体来说,BeautifulSoup支持使得爬虫的实现更加方便快捷,学习起来也极易上手,同时,作为极其强大的python库,在很多爬虫视频教程内都应用到,也适于新手的入门。

新手上路,请多指教!

你可能感兴趣的:(软件工程,python,爬虫,python,html,爬虫)