python 解析HTML


1. 理解网页上的数据

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

2. 解析HTML

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

2.1 BeautifulSoup

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

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


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
>>>

  下面看一下网页的源代码:
  
  src
  
  使用BeautifulSoup进行解析:
  使用bt = BeautifulSoup(html.read(),"lxml")语句对接收到的html进行解析,bt.title, bt.meta, bt.title.string, bt.find_all('meta')进行元素的查找。对查找到的多个结果,可以以数组的形式存储和访问。
  
  par
  
  如果想提取网页中含有的超链接呢?我们只需要查找到”a”标签,并将其提取出来即可。links = bt.find_all("a') 可将网页中所有的超链接保存在links中,如果len(links)等于0的话就是网页中没有超链接,否则直接以数组的方式访问即可。

评论关闭