关于urllister.py的求助
时间:2011-03-03
来源:互联网
from sgmllib import SGMLParser
class URLLister(SGMLParser):
def reset(self):。。。。。。。。。。。。。。。。。(1)
SGMLParser.reset(self)
self.urls = []
def start_a(self, attrs):。。。。。。。。。。。。(2)
href = [v for k, v in attrs if k=='href']。。。。(3)(4)
if href:
self.urls.extend(href)
(1)reset 由 SGMLParser 的 __init__ 方法来调用,也可以在创建一个分析器实例时手工来调
用。所以如果您需要做初始化,在 reset 中去做,而不要在 __init__ 中做。这样当某人重
用一个分析器实例时,可以正确地重新初始化。
(2)只要找到一个 <a> 标记,start_a 就会由 SGMLParser 进行调用。这个标记可以包含一个
href 属性,或者包含其它的属性,如 name 或 title。attrs 参数是一个 tuple 的
list,[(attribute, value), (attribute, value), ...]。或者它可以只是一个有效
的 HTML 标记 <a> (尽管无用),这时 attrs 将是个空 list。
(3)我们可以通过一个简单的多变量 list 映射 来查找这个 <a> 标记是否拥有一个 href 属性。
(4)像 k=='href' 的字符串比较是区分大小写的,但是这里是安全的。因为 SGMLParser 会在创
建 attrs 时将属性名转化为小写。
小弟初学python,有几处不懂,让各位见笑:
在(2)中说只要找到一个<a>标记,start_a就会由SGMLParser调用,标记<a>是什么,程序里并没有出现啊。
另外为什么会被SGMLParser调用,start_a不是自己定义的函数吗。
怎么看出href是<a>的一种属性的,可否解释一下:href = [v for k, v in attrs if k=='href']。
class URLLister(SGMLParser):
def reset(self):。。。。。。。。。。。。。。。。。(1)
SGMLParser.reset(self)
self.urls = []
def start_a(self, attrs):。。。。。。。。。。。。(2)
href = [v for k, v in attrs if k=='href']。。。。(3)(4)
if href:
self.urls.extend(href)
(1)reset 由 SGMLParser 的 __init__ 方法来调用,也可以在创建一个分析器实例时手工来调
用。所以如果您需要做初始化,在 reset 中去做,而不要在 __init__ 中做。这样当某人重
用一个分析器实例时,可以正确地重新初始化。
(2)只要找到一个 <a> 标记,start_a 就会由 SGMLParser 进行调用。这个标记可以包含一个
href 属性,或者包含其它的属性,如 name 或 title。attrs 参数是一个 tuple 的
list,[(attribute, value), (attribute, value), ...]。或者它可以只是一个有效
的 HTML 标记 <a> (尽管无用),这时 attrs 将是个空 list。
(3)我们可以通过一个简单的多变量 list 映射 来查找这个 <a> 标记是否拥有一个 href 属性。
(4)像 k=='href' 的字符串比较是区分大小写的,但是这里是安全的。因为 SGMLParser 会在创
建 attrs 时将属性名转化为小写。
小弟初学python,有几处不懂,让各位见笑:
在(2)中说只要找到一个<a>标记,start_a就会由SGMLParser调用,标记<a>是什么,程序里并没有出现啊。
另外为什么会被SGMLParser调用,start_a不是自己定义的函数吗。
怎么看出href是<a>的一种属性的,可否解释一下:href = [v for k, v in attrs if k=='href']。
作者: tziyachi5252 发布时间: 2011-03-03
程序里没有<a>,是因为程序里没有输入。你随便打开一个网页,用浏览器查看源代码,然后搜<a,就知道了。<a>tag和属性都是基本的HTML知识,你自己补下html吧。
[v for k, v in attrs if k=='href']你google下python list comprehension。
[v for k, v in attrs if k=='href']你google下python list comprehension。
作者: iambic 发布时间: 2011-03-03
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28