【发布时间】:2011-03-31 06:05:51
【问题描述】:
我一直在玩 BeautifulSoup,这很棒。我的最终目标是尝试从页面中获取文本。我只是想从正文中获取文本,在特殊情况下从<a> 或<img> 标签中获取标题和/或alt 属性。
到目前为止,我有这个EDITED & UPDATED CURRENT CODE:
soup = BeautifulSoup(page)
comments = soup.findAll(text=lambda text:isinstance(text, Comment))
[comment.extract() for comment in comments]
page = ''.join(soup.findAll(text=True))
page = ' '.join(page.split())
print page
1) 对于我的特殊情况,您有什么建议最好的方法是不要从我上面列出的两个标签中排除这些属性?如果这样做太复杂,则不如执行 #2 重要。
2) 我想剥离<!-- --> 标签以及它们之间的所有内容。我该怎么办?
QUESTION EDIT @jathanism:这里有一些我试图去掉的评论标签,但即使我使用你的例子也保留下来
<!-- Begin function popUp(URL) { day = new Date(); id = day.getTime(); eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=330,left = 774,top = 518');"); } // End -->
<!-- var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"}); //--> <!-- var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"}); //--> <!-- var whichlink=0 var whichimage=0 var blenddelay=(ie)? document.images.slide.filters[0].duration*1000 : 0 function slideit(){ if (!document.images) return if (ie) document.images.slide.filters[0].apply() document.images.slide.src=imageholder[whichimage].src if (ie) document.images.slide.filters[0].play() whichlink=whichimage whichimage=(whichimage<slideimages.length-1)? whichimage+1 : 0 setTimeout("slideit()",slidespeed+blenddelay) } slideit() //-->
【问题讨论】:
-
是否有源文档用作测试用例?如果您能提供一些您想到的东西作为比较的基础,那将非常有帮助。
标签: python beautifulsoup