继续回复vivre_1“求助 python的问题”

iambic 2011-02-18 02:28:29
http://topic.csdn.net/u/20110218/10/9d56ddb9-5cd7-4286-bc15-9b5b71d3a3e2.html

我本来想一边改一边回复,结果不能连续三次回复,vivre_1又结贴了,真悲剧。现在单独发帖回复吧。

vivre_1应该再精益求精点,把问题搞明白。虽然我之前给你的回复貌似可以解决问题,但实际上属于重写代码,还没有指出为什么你原来的代码不能工作。而且代码里里还有些其他的(风格上的)问题,也应该改掉。

……以下接之前的回复……

尽量少写循环。把内层的循环删掉了:

if __name__=='__main__':
links = map(completeLink, parseLinks("http://www.yxlink.com/index.html"))

i = 0
while i < len(links):
moreLinks = set(links) - set(map(completeLink, parseLinks(links[i])))
links.extend(moreLinks)
i += 1
print links


另外网页里拿到的链接可能有重复,所以简单去个重:
    links = list(set(links))



完整代码如下:
import urllib
import HTMLParser

class LinkParser(HTMLParser.HTMLParser):
def __init__(self):
HTMLParser.HTMLParser.__init__(self)
self.links= []

def handle_starttag(self,tag,attrs):
print self.links
if tag == 'a':
for name, value in attrs:
if name == 'href':
self.links.append(value)

def parseLinks(url):
parser = LinkParser()
parser.feed(urllib.urlopen(url).read())
return parser.links

def completeLink(url):
root = "http://www.yxlink.com"
if url.startswith('http://'):
return url
elif url.startswith('/'):
return root + url
else:
return root + '/' + url

if __name__=='__main__':
links = map(completeLink, parseLinks("http://www.yxlink.com/index.html"))
links = list(set(links))

i = 0
while i < len(links):
moreLinks = set(links) - set(map(completeLink, parseLinks(links[i])))
links.extend(moreLinks)
i += 1
print links


那么,为什么你原来的代码不工作呢?这个貌似是因为HTMLParser.feed返回后,还有一部分数据没处理留在buffer里(具体为什么不太清楚)。你再次调用HTMLParser.feed,实际上是接着处理上次剩余的数据,然后好像上次剩余的数据又没处理完,所以相当于什么都没做。如果在掉次HTMLParser.feed之前调用下HTMLParser.reset,把那些剩下的东西删掉,应该也可以拿到结果。至于为什么HTMLParser.feed没处理完,你可能要仔细看看文档或者源代码搞清楚了。
...全文
195 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fibbery 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iambic 的回复:]
奇怪,现在CSDN默认发帖是40分了?
[/Quote]

看得出,iambic更多专注于回答问题,而很少发问了。呵呵。至少咱们这个板块早就是40分了。

iambic的代码非常的美观典雅,还得多多向你学习。论坛需要向你这样的高手和有热情的人。向你致敬。
vivre_1 2011-02-23
  • 打赏
  • 举报
回复
目前,利用网上随处可见的攻击软件,攻击者不需要对网络协议的深厚理解基础,即可完成诸如更换Web网站主页,到取管理员密码,破坏整个网站数据等等攻击。而这些攻击过程中产生的网络层数据,和正常数据没有什么区别,传统的防火墙对于这些攻击变得毫无作用。 
<p>  今后的几个月里,Citrix、Barracuda-NetContinuum、F5 Networks、Imperva和Protegrity 将对其新产品<a href="http://www.yxlink.com//products-waf-hard.html" title="Web应用防火墙"><strong>Web应用防火墙</strong></a>(简称:<a href="http://www.yxlink.com//products-waf-hard.html" title="WAF">WAF</a>)增加一些功能,以使它们在保护联网的企业数据方面发挥更大的作用。</p>
<p>  1、有效保卫应用程序</p>
<p>  虽然传统的防火墙多年来在第三层有效地阻断了一些数据包,但它在阻止利用应用程序漏洞进行的攻击方面却无能为力。Web应用防火墙可检测应用程序异常情况和敏感数据(如信用卡和社会保险号等)是否正被窃取,并阻断攻击或隐蔽敏感数据。</p>
<p>  <a href="http://www.yxlink.com//products-waf-hard.html" title="Web应用防火墙"><strong>Web应用防火墙</strong></a>(简称:<a href="http://www.yxlink.com//products-waf-hard.html" title="WAF">WAF</a>)将与负载均衡设备和确保Web应用程序可用性的应用交换机集成在一起,以创造出可同时解决可访问性和安全性的产品。这样的平台可保持服务器对终端用户的可用性和免受攻击,还可确保进出数据中心的流量不受危害。</p>
<p>  独立的Web应用防火墙可在应用层检查HTTP和HTTPS流量,在合法的应用程序运行时查找试图蒙混过关的攻击程序。这些产品可防范一些人运用恶意攻击使一些网站泄露敏感信息或进行非法闯入。</p>
<p>  2、保护应用,殊途同归</p>
<p>  虽然Web应用防火墙厂商以不同的方式着手研究解决加速和保护Web应用程序流量的问题,但<a href="http://www.yxlink.com//products-waf-hard.html" title="Web应用防火墙"><strong>Web应用防火墙</strong></a>(简称:<a href="http://www.yxlink.com//products-waf-hard.html" title="WAF">WAF</a>)在网络中的位置是不会变化的,它在应用服务器的前面,厂商所提供的功能可能包括服务器之间的流量负载均衡、压缩、加密、HTTP和HTTPS流量的反向代理、检查应用程序的一致性和汇聚TCP会话。</p>
<p>  Citrix认为,就此而言,该公司的目标是将Web应用程序与应用交换机集成在一起, 这样该设备就能为服务器分配流量,也能对流量进行仔细分析以查找应用层攻击。</p>
<p>  Barracuda-NetContinuum的产品负责人说:“预计NetContinuum明年将增加一些软件工具,这些工具可使应用安全策略的配置更为容易。”该公司还在考虑,根据诸如安全声明标记语言(Security Assertion Markup Language)之类的方案,应用网关应在身份识别和访问管理方面发挥何种作用。</p>
<p>  F5的产品管理和营销副总裁Erik Giesa提到,该公司将依靠保护XML(可扩展标记语言)和SIP(会话初始化协议)流量来支持Web服务器和VoIP。它还正在求助于在其平台中增加WAN加速技术和制作一种软件开发者工具包,以鼓励创建一旦发现入侵就能阻断流量的自保护应用程序。该应用程序将与管理F5 Big IP应用交换机的软件相结合,在Big IP内建立一个可阻断可疑流量的规则。</p>
<p>  Imperva的首席执行官Shlomo Kramer说:“Imperva 计划开发一些审计和评估工具,这些工具可帮助客户遵从这样的一些规则:支付卡行业标准、HIPAA法案和用于保护私密信息的Sarbanes-Oxley法案。”据Protegrity的产品战略和开发副总裁Jeannine Bartlett介绍,Protegrity期望将其数据库安全装置与通过Kavado得到的应用保护软件结合在一起。她说:“我们明年的发布主要集中在后端报告、统计、度量、特定应用程序映射上,以满足客户遵从法规的各种需要。这才是较大型公司所真正需要的东西。”</p>
<p>  Whitely认为,所有这一切活动都表明,<a href="http://www.yxlink.com//products-waf-hard.html" title="Web应用防火墙"><strong>Web应用防火墙</strong></a>(简称:<a href="http://www.yxlink.com//products-waf-hard.html" title="WAF">WAF</a>)正趋于成熟。这些设备多数是衍生于反向代理技术,利用这种技术,向Web服务器传送的流量由代理终止后以单独会话的方式传送给服务器,然后服务器的响应又被代理。虽然流量经过了代理,但是该设备可对流量进行检查,以确定它是否有利用应用程序漏洞的企图。</p>
<p>  3、普遍应用尚需时日</p>
<p>  Pacific Northwest National Laboratory使用Barracuda-NetContinuum应用防火墙来保护其Web应用程序。该机构网络安全组的研究科学家Mark Hadley说:“有时需要重写应用程序以便它们能通过应用防火墙。”例如,如果一个应用协议的某个字段使用一个也用于Web应用程序URL的字符,如“forward slash”,那就表示它是一个可被攻击者利用的漏洞。因此,用户应对其应用程序有可能需要重写一事作好准备。Hadley建议设立测试环境,在应用程序部署之前将它们运行一遍,鉴别和修正这样的小毛病。</p>
<p>  Whiteley认为,这种复杂性可能会使一些用户认为<a href="http://www.yxlink.com//products-waf-hard.html" title="Web应用防火墙"><strong>Web应用防火墙</strong></a>(简称:<a href="http://www.yxlink.com//products-waf-hard.html" title="WAF">WAF</a>)复杂得难以部署,如果他们的应用程序对他们的业务不是关键性的,就更不愿意部署应用防火墙。他的观点是,当厂商们把应用防火墙和应用交换机集成在同一个设备中,并开发一些软件工具使它们更易于配置时,就会有更多的商业用户使用它们。他说:“再过9到12个月,它就会被广泛采用。”</p>
<p>  关键词:<a href="http://www.yxlink.com//products-waf-hard.html" title="Web应用防火墙"><strong>Web应用防火墙</strong></a>、<a href="http://www.yxlink.com//products-waf-hard.html" title="WAF">WAF</a></p>
vivre_1 2011-02-21
  • 打赏
  • 举报
回复
TX..真的太感谢了
bestdowt1314 2011-02-18
  • 打赏
  • 举报
回复
iambic 真是一个对技术负责的人呀。向你学习
iambic 2011-02-18
  • 打赏
  • 举报
回复
奇怪,现在CSDN默认发帖是40分了?
codesnail 2011-02-18
  • 打赏
  • 举报
回复
iambic的热情高涨啊。。。。
Ben_Sun 2011-02-18
  • 打赏
  • 举报
回复
iambic好有责任心~
初入职场~以后还请iambic多多解惑~

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧