1. 理解网页上的数据

  • 网页上的数据主要有:
  • HTML
  • XHTML
  • XML
  • JSON
  • 需要一个接受数据并解析的机制
  • 需要一个产生数据并发送的机制

2. 解析HTML

  • 层次化的数据
  • 有多个解析HTML的第三方库,例如:LXML,BeautifulSoup,HTMLParser等等。
  • 解析HTML所面临的问题:
  • 没有统一的标准。
  • 很多网页并没有遵循HTML文档

2.1 BeautifulSoup

  BeautifulSoup第三方库有以下特点:
  
- 容易使用。
- 版本4允许使用lxml和html5lib,可以更好的处理不规范的HTML。
- 在处理编码方面也比较有效。

  下面是解析方法及优缺点的一个对比:

  

  

python htmlparser 表格 python 解析html表格_html


3 代码示例

  从终端进入python环境,按照以下方式进行试验。如果没有bs4库的话,可以使用以下命令(Ubuntu下)进行安装:

sudo pip install beautifulsoup4 
    
   >>> 
 >>> from bs4 import BeautifulSoup 
 >>> 
 >>> import urllib 
 >>> html = urllib.urlopen(“http://192.168.1.33/temwet/index.html“) 
 >>> 
 >>> html 
 addinfourl at 164618764 whose fp = socket._fileobject object at 0x9cd19ac 
 >>> html.code 
 200 
 >>>

  下面看一下网页的源代码:

  

  

python htmlparser 表格 python 解析html表格_python_02


  

  使用BeautifulSoup进行解析:

  使用bt = BeautifulSoup(html.read(),"lxml")语句对接收到的html进行解析,bt.title, bt.meta, bt.title.string, bt.find_all('meta')进行元素的查找。对查找到的多个结果,可以以数组的形式存储和访问。

  

  

python htmlparser 表格 python 解析html表格_python_03


  

  如果想提取网页中含有的超链接呢?我们只需要查找到”a”标签,并将其提取出来即可。links = bt.find_all('a') 可将网页中所有的超链接保存在links中,如果len(links)等于0的话就是网页中没有超链接,否则直接以数组的方式访问即可。