【发布时间】:2016-07-07 19:38:03
【问题描述】:
我正在尝试提取给定 url 的纯文本。 根据我的搜索,最相关的工具似乎是BeautifulSoup,所以我写了一个简单的程序来测试。 但是,我发现它仍然不能满足我的要求。结果包含这么多非纯文本。
您可以运行以下 python 代码来查看结果。
import urllib
url = "http://www.amfastech.com/2015/07/lenovo-k3-note-brutally-honest-review-specifications-pros-cons.html"
html = urllib.urlopen(url).read().decode('utf8')
from bs4 import BeautifulSoup
raw = BeautifulSoup(html).get_text()
当您查看raw 时,结果包含如下代码:
(function() { (function(){function
c(a){this.t={};this.tick=function(a,c,b){var d=void 0!=b?b:(new
Date).getTime();this.t[a]=[d,c];if(void
0==b)try{window.console.timeStamp("CSI/"+a)}catch(e){}};this.tick("start",null,a)}var
a;window.performance&&(a=window.performance.timing);var h=a?new
c(a.responseStart):new c;window.jstiming={Timer:c,load:h};if(a){var
b=a.navigationStart,e=a.responseStart;0<b&&e>=b&&(window.jstiming.srt=e-b)}if(a){var
d=window.jstiming.load;0<b&&e>=b&&(d.tick("_wtsrt",void
0,b),d.tick("wtsrt_",
"_wtsrt",e),d.tick("tbsd_","wtsrt_"))}try{a=null,window.chrome&&window.chrome.csi&&(a=Math.floor(window.chrome.csi().pageT),d&&0<b&&(d.tick("_tbnd",void
0,window.chrome.csi().startE),d.tick("tbnd_","_tbnd",b))),null==a&&window.gtbExternal&&(a=window.gtbExternal.pageT()),null==a&&window.external&&(a=window.external.pageT,d&&0<b&&(d.tick("_tbnd",void
0,window.external.startE),d.tick("tbnd_","_tbnd",b))),a&&(window.jstiming.pt=a)}catch(k){}})();window.tickAboveFold=function(c){var
a=0;if(c.offsetParent){do
a+=c.offsetTop;while(c=c.offsetParent)}c=a;750>=c&&window.jstiming.load.tick("aft")};var
f=!1;function
g(){f||(f=!0,window.jstiming.load.tick("firstScrollTime"))}window.addEventListener?window.addEventListener("scroll",g,!1):window.attachEvent("onscroll",g);
})();
所以我的问题是,我怎样才能真正通过 Python 从 html 中获取干净的纯文本。我看到很多网络工具都支持所谓的书籍查看模式,在大多数情况下你只能看到主要文章,所以我认为提取干净的纯文本应该没有问题。谢谢!
【问题讨论】:
标签: python beautifulsoup