之前都是用Jsoup 作网页解析,最近用Django+Python 设计实现一套信息采集系统,解析器选择了和jsoup 相近的 beautifulsoupcss
用下来两个解析器除了名字相近 都支持 css selecter 解决问题思路彻底不一样,再加上java 和Python 的语言差异html
须要仔细研究html5
先看demojava
#!/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 编码真是个问题python
要点:编码
1.若是不指定文档解析器(python 自带、lxml 、html5)
spa
beautifulsoup 会报错,同时也会自动选择一个最好的解析器设计
2.使用css 选择器,结果是一个列表,循环遍历 的是一个tag beautifulsoup 里的对象,并不是是字符串code
因此能够接着解析
xml
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
待续....