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