1. 理解网页上的数据
- 网页上的数据主要有:
- HTML
- XHTML
- XML
- JSON
- 需要一个接受数据并解析的机制
- 需要一个产生数据并发送的机制
2. 解析HTML
- 层次化的数据
- 有多个解析HTML的第三方库,例如:LXML,BeautifulSoup,HTMLParser等等。
- 解析HTML所面临的问题:
- 没有统一的标准。
- 很多网页并没有遵循HTML文档
2.1 BeautifulSoup
BeautifulSoup第三方库有以下特点:
- 容易使用。
- 版本4允许使用lxml和html5lib,可以更好的处理不规范的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
>>>
下面看一下网页的源代码:
使用BeautifulSoup进行解析:
使用bt = BeautifulSoup(html.read(),"lxml")
语句对接收到的html进行解析,bt.title, bt.meta, bt.title.string, bt.find_all(‘meta‘)
进行元素的查找。对查找到的多个结果,可以以数组的形式存储和访问。
如果想提取网页中含有的超链接呢?我们只需要查找到”a”标签,并将其提取出来即可。links = bt.find_all(‘a‘)
可将网页中所有的超链接保存在links中,如果len(links)
等于0的话就是网页中没有超链接,否则直接以数组的方式访问即可。