Python 抓取解析HTML
来源:互联网 发布:什么是java反射机制 编辑:程序博客网 时间:2024/06/05 22:48
这个程序解析百度文库的一个网页,提取其中的一个ID 值, 参考了网上的一些资料,才写成。
我理解这个HTMLParser类是这样工作的: 遍历每个遇到的标签。 主要是三个函数,
handle_starttag
handle_data
handle_endtag
这个三个函数,分别处理,你看到这个标签 开始,中间,结尾的时间点, 你可以做一些自己想要的处理,比如像我,我会把符合我想要的特征的 ID 存下来。 所以需要 在html源文件中,寻找你要找的数据的特点。
写这个程序的另个碰到的问题是 gbk编码的问题。
我一般都是用的utf8的编码 ,但是,百度这个页面的输出是gb2312的编码,这样Python程序就解析不了html了, 也是在网上查了资料,看到
reload(sys)
sys.setdefaultencoding(‘GBK’)
用这两句解决了编码的问题。
下面是源文件,欢迎交流学习。
#-*- encoding: gbk -*- from HTMLParser import HTMLParserimport urllibimport sys import sys #sys.setdefaultencoding('utf8')reload(sys)sys.setdefaultencoding('GBK')class parselinks(HTMLParser): def __init__(self): self.data=[] self.href=0 self.href_value='' self.target_value='' HTMLParser.__init__(self) def handle_starttag(self,tag,attrs): if tag =='a': for name,value in attrs: if name == 'href': self.href=1 self.href_value = value if name == 'target': self.target_value = value def handle_data(self,data): pass def handle_endtag(self,tag): if tag=='a' and self.target_value == '_blank': if self.href_value.find('view') != -1: self.data.append(self.href_value) self.href=0 self.href_value='' self.target_value='' def getresult(self): self.data = set(self.data) for value in self.data: print valueif __name__=="__main__": IParser = parselinks() webcontent = urllib.urlopen("http://wenku.baidu.com/o/koolearn?tab=1&od=1&view=0&pay=0&cid=0&pn=1").read() IParser.feed(webcontent) IParser.getresult() IParser.close()
0 0
- Python 抓取解析HTML
- Python 抓取并解析 HTML
- 【数据抓取】HTML解析
- Python写爬虫——抓取网页并解析HTML
- Python写爬虫——抓取网页并解析HTML
- Python之HTML的解析(网页抓取一)
- Python写爬虫——抓取网页并解析HTML
- Python写爬虫——抓取网页并解析HTML
- Python写爬虫——抓取网页并解析HTML
- Python写爬虫——抓取网页并解析HTML
- Python抓取html内容
- Python抓取HTML
- 抓取网页并解析HTML
- HTML解析---IMDB简介抓取
- 抓取网页并解析HTML
- python抓取网页的html
- Python抓取和解析网页
- python学习笔记三:解析html(HTMLParser、SGMLParser),并抓取图片
- Python计算机视觉编程练习8:string 模块学习
- iOS通过CLLocationManager调用地图导航功能
- 敏捷开发流程(转)
- jdbc学习
- [转载] cell重绘
- Python 抓取解析HTML
- Mysql学习笔记四,字符集
- usb设备的probe全过程
- 初步解析内核函数copy_to_user和copy_from_user
- 如何实现 TreeView Items 全部展开和全部收缩(WPF)
- GPU之cuda学习第三章内容总结
- Java中equals和==的区别
- 字符串的split方法
- 阿里悟空学习