1.HTMLParser一般这么用:

from html.parser import HTMLParser
from urllib import request class MyHtmlParser(HTMLParser): def __init__(self):
HTMLParser.__init__(self)
self.categories = []
self.in_a = False def handle_starttag(self, tag, attrs):
def _attr(attrs,attrname):
for attr in attrs:
if attr[] == attrname:
return attr[]
return None
if tag == 'a' and _attr(attrs,'role') == 'menuitem':
self.in_a = True def handle_endtag(self, tag):
if tag == 'a' and self.in_a:
self.in_a = False def handle_data(self, data):
if self.in_a:
self.categories.append(data)

2.BeautifulSoup一般这样:

soup = BeautifulSoup(price_html,'html.parser')
soup.find_all('div',class_='abcd')

3.HTMLParser遇到div嵌套,handle_endtag里关闭div开关会提前关闭,试了很久目前没想出解决方案。

3.BeautifulSoup的find('div', class_='test')是find_all(...)的特殊情况,只匹配第一次。class是python预留关键字,所以加下划线区分,也可以这样attrs={'class':'test')。其中test还可以用正则表达式来匹配。

4.如果没有span, tag.div.a.span=None, tag.div.a.span.string会报错。

5.BeautifulSoup遇到问题:<a>kkk<span>lang</span></a>, a.string无法获得kkk, 就因为a里面嵌套了<span>

6.BeautifulSoup先读取整个html,生成对象树,比较耗内存,速度慢。但是比HTMLParser更方便使用。

最新文章

  1. jQuery之DOM属性
  2. Java+jquery实现裁剪图片上传到服务器
  3. iOS阶段学习第二天笔记(数据类型与进制)
  4. word第二讲(0806)
  5. JS仿Android Toast提示效果
  6. 浙江理工2015.12校赛-G Jug Hard
  7. 利用VS2005进行dump文件调试
  8. HTML5区域范围文本框实例页面
  9. IT人员应该怎么跳槽
  10. POI通过模板导出EXCEL文件
  11. 【SQL*PLUS】常规使用
  12. 向MapReduce转换:生成用户向量
  13. Ajax疯狂讲义
  14. IE提示“Internet Explorer已限制此网页运行脚本或ActiveX控件”的解决办法
  15. win7 X64系统上 PL/SQL不能识别Oracle实例
  16. Lemon 评测软件用法
  17. 微信小程序使用三元表达式切换图片
  18. _编程语言_C++_简介
  19. PHP初级程序员出路
  20. [转]腾讯云Linux云服务器文件上传利器——WinSCP

热门文章

  1. Go Example--defer
  2. UEFI+GPT双硬盘安装Win10+Ubuntu16.04双系统
  3. How to Create an PostgreSQL Extension
  4. Django学习笔记之URL与视图
  5. 1.2.4 Excel快速建立n个文件夹
  6. centos7 下安装Docker CE
  7. Centos7 安装redis集群哨兵模式
  8. 解决mysqli的中文乱码问题
  9. django模型系统(三)
  10. access数据库编号转换成统一3位数长度方法,不足3位前面补零