Python 网页解析之Beautifulsoup

以前都是用Jsoup 做网页解析,最近用Django+Python 设计实现一套信息采集系统,解析器选择了和jsoup 相近的 beautifulsoup

用下来两个解析器除了名字相近 都支持 css selecter   解决问题思路完全不同,再加上java 和Python 的语言差别

需要仔细研究

先看demo

#!/usr/bin/python
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup


def parse_list(trinfo):
    # psoup = BeautifulSoup(trinfo, "xml")  # 指定文档解析器
    print trinfo.select_one('span').get_text().strip()
    print trinfo.select('span').


doc = open('C:/Users/Administrator/Desktop/table.html', 'r')
# print doc.read()
soup = BeautifulSoup(doc.read(), "xml")  # 指定文档解析器

info = soup.select('table#table1 > tr')

for m in range(len(info)):
    # print type(info[m])
    parse_list(info[m])

这样解析中文会出现乱码,发现python 编码真是个问题

要点:

1.如果不指定文档解析器(python 自带、lxml 、html5)

beautifulsoup 会报错,同时也会自动选择一个最好的解析器

2.使用css 选择器,结果是一个列表,循环遍历 的是一个tag  beautifulsoup 里的对象,并非是字符串

所以可以接着解析

3.文档乱码在文件读取的时候便发生了 ,读取文章的时候 可以设置编码

# -*- coding: UTF-8 -*-
import codecs
doc = codecs.open('C:/Users/Administrator/Desktop/table.html', 'r+', 'GBK')

s = doc.readlines()
doc.close()
for line in s:
    print line


待续....


你可能感兴趣的:(Python 网页解析之Beautifulsoup)