Python 网页解析之Beautifulsoup

之前都是用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


待续....

相关文章
相关标签/搜索