以前都是用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
待续....