当然,HTML页面可以使用任意数量的python解析器进行解析,但我很惊讶,似乎没有任何公共解析脚本可以从给定的HTML doc中提取有意义的内容(不包括侧边栏,导航等) .
我猜这是收集DIV和P元素,然后检查它们是否有最少量的文本内容,但我确信一个可靠的实现将包含许多我没有想到的东西.
我试图从finance.yahoo.com下载千年股票的历史股票价格数据.该网站仅在一个页面上显示60天的数据,因此我必须循环浏览我下载的时间段以及不同证券的循环.我使用以下代码访问相关页面.
Set httpObject = CreateObject("MSXML2.XMLHTTP")
httpObject.Open "GET", url, False
httpObject.send
webObject.body.innerHTML = httpObject.responseText
Run Code Online (Sandbox Code Playgroud)
这就像我访问的99%数据的魅力.但是,不时地,网站返回的对象都是空的,即使完全相同的URL会在Internet Explorer中显示正确的数据.如果我重新运行该URL的代码,则下次可能会或可能不会失败.
我想知道是否有更稳定/一致的方式使用上述方法.我之前已经实现了InternetExplorer.Application方法来下载数据,但发现它要慢得多,也很麻烦.
我正在使用此代码查找页面中所有有趣的链接:
soup.findAll('a', href=re.compile('^notizia.php\?idn=\d+'))
Run Code Online (Sandbox Code Playgroud)
它的工作做得很好.不幸的是,在标签里面有很多嵌套标签,比如字体,b和不同的东西......我只想得到文本内容,没有任何其他的html标签.
链接示例:
<A HREF="notizia.php?idn=1134" OnMouseOver="verde();" OnMouseOut="blu();"><FONT CLASS="v12"><B>03-11-2009: <font color=green>CCS Ingegneria Elettronica-Sportello studenti ed orientamento</B></FONT></A>
Run Code Online (Sandbox Code Playgroud)
当然它很难看(而且标记并不总是一样!)我想得到:
03-11-2009: CCS Ingegneria Elettronica-Sportello studenti ed orientamento
Run Code Online (Sandbox Code Playgroud)
它说text=True在findAll方法中使用的文档,但它会忽略我的正则表达式.为什么?我怎么解决这个问题?
我一直在做很多研究,以找出编写应用程序的最佳方法,以便从几乎任何HTML网页获取主要文章内容.我有一个使用libxml2来解析XML的C程序,但是我遇到了Alchemy API,它看起来像我想做的那样.
但是,它只有一个在线API,我想在不依赖任何外部调用的情况下将应用程序保留在内部.
那么有人有提示吗?我希望有一个离线替代方案,可以做Alchemy API可以做的事情(付费/非付费).
我的替代方案可能是解析HTML并使用NLP(自然语言处理)技术和其他方法来获取主要文章内容.它将被使用的网站类型包括带有新闻栏目或博客的网站.
我该如何解析以下HTML
<body>
<span style="font-size:11px">12345</span>
<a>Hello<a>
</body>
Run Code Online (Sandbox Code Playgroud)
我想从www.testtest.com中使用style ="font-size:11px"从"span"中检索数据"12345",但我只想要那些数据,而不是其他任何数据.
我怎么能做到这一点?
我想以编程方式保存网页.
我并不仅仅意味着保存HTML.我还想自动存储所有相关文件(图像,CSS文件,可能是嵌入式SWF等),并希望重写本地浏览的链接.
预期用途是个人书签应用程序,其中在原始副本被删除的情况下缓存链接内容.
caching screen-scraping web-applications html-content-extraction
我想解析一个html页面并从中提取有意义的文本.有人知道一些好的算法吗?
我在Rails上开发我的应用程序,但我认为ruby在这方面有点慢,所以我认为如果在c中存在一些好的库,那么这是合适的.
谢谢!!
PD:请不要用java推荐任何东西
更新:我找到了这个链接文本
可悲的是,在python中
有人知道samppipe库的.net端口吗?
我需要在服务器端在运行时从随机网页中提取纯文本。我使用Google App Engine和可读性python端口。有很多。
我使用的是Yuri的最新版本,并且似乎正在积极开发中。我设法使它使用Python 2.7在Google App Engine上运行。现在的“问题”是它返回HTML,而我需要纯文本。
这篇Stackoverflow文章中有关链接提取的建议是使用BeatifulSoup。如果没有其他选择,我会的。BeatifulSoup将是另一个依赖项,因为我使用基于lxml的版本。
我的问题:
使用 HTML Agility Pack 非常适合获取后代和整个表格等...但是在以下情况下如何使用它
...Html Code above...
<dl>
<dt>Location:</dt>
<dd>City, London</dd>
<dt style="padding-bottom:10px;">Distance:</dt>
<dd style="padding-bottom:10px;">0 miles</dd>
<dt>Date Issued:</dt>
<dd>26/10/2010</dd>
<dt>type:</dt>
<dd>cement</dd>
</dl>
...HTML Code below....
Run Code Online (Sandbox Code Playgroud)
如果在这种情况下英里小于 15,你怎么能找到?我不明白你可以对元素做一些事情,但是你是否必须让所有元素找到正确的元素,然后找到数字来检查其值?或者有没有办法将正则表达式与 Agility pack 一起使用以更好的方式实现这一目标......