程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> 利用HTMLParser來抓取數據

利用HTMLParser來抓取數據

編輯:Python

 有時候測試代碼需要大量的合法URL,而自己隨機生成的又可能不存在,所以通常情況下會找一些包涵大量URL的頁面去分析提取,HTMLParser就是這樣一個頁面分析工具,它是python的標准庫,而且用起來很簡單,所以在偶爾需要提取頁面標簽數據的時候很適合。

解決

通常HTMLParser都是與urllib一起使用,比如要提取百度首頁上的所有URL:

# -*- coding: utf-8 -*-
import urllib
import HTMLParser

class URLParser(HTMLParser.HTMLParser):
def handle_starttag(self, tag, attrs):
if tag == 'a':
for name, value in attrs:
if name == 'href' and value.startswith('http'):
print >> f, value
break

with open('db.txt', 'w') as f:
parser = URLParser()
try:
parser.feed(
urllib.urlopen('http://www.baidu.com').read().decode('gbk')
)
except HTMLParser.HTMLParseError, e:
print e
finally:
parser.close()

但是因為一些頁面的不規范,所以經常會遇到HTMLParser.HTMLParseError: malformed start tag錯誤,如果這樣可以考慮re模塊,或者使用BeautifulSoup來代替HTMLParser。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved