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


待續....

相關文章
相關標籤/搜索