2010-05-31 68 views
2

我有一个毛毛病的问题,我想生成一段给定url的“描述”段落,通常是文章的开头。元描述字段是一种可行的方式,但它并不总是很好或设置不当。得到一个网页的“摘要”

公平地说,从屏幕截图的HTML中完成这件事有点麻烦。我有一个大概的想法,也许可以扫描HTML的第一个“适当”的部分,但很难说这是什么,也许像第一段含有一定数量的文字...

任何人都可以好主意? :)它没有做到万无一失

回答

6

所以,你想成为一个新的谷歌,嘿? :-)

很多网站都是“搜索引擎友好”这些天。这使您能够找到标题,然后查找下面的段落。

另外,查找列表。在某些类似标签(标签,手风琴...)的界面中有很多内容是使用有序列表或无序列表完成的。

如果失败了,也许会寻找类“内容”或“主”或组合的div,并从那里开始。

如果您使用不同的方法,请确保您保持什么工作和什么没有(甚至可以保存整个页面)的统计数据,因此您可以查看和调整您的解析和搜索方法。

作为一个方面说明,我用htmlagilitypack解析和搜索成功的HTML。那么,在leasts它打败了与正则表达式解析:-)

+0

你在这里第一次听到它;)但实际上,我认为谷歌有它更容易,因为他们可能只是看短语/字在SEARCHTEXT,并采取周围的文字。 寻找第一H1,H2或和解析从那里是一个伟大的想法,谢谢。正如你所说的,可能必须使用不同技术的混合来覆盖不同的场景,但这是一个不错的开始。 我可能会开始通过用正则表达式替换掉一些标签,通过一些东西来运行它,以使其格式良好,并使用XML DOM/Xpath的东西 – Homde 2010-05-31 07:09:36

+0

我会*强烈*建议不要使用正则表达式。正如我所说,我已经使用htmlagilitypack。它使用xpath来遍历html文档,而imo更清晰。此外,请参阅http://stackoverflow.com/questions/2490765/which-is-the-best-html-tidy-pack-is-there-any-option-in-html-agility-pack-to-mak – Luc 2010-05-31 07:47:13

+0

刚正则表达式剥离一些标签,我同意使用正则表达式浏览html是疯了:)虽然浏览XML树非常简单高效 – Homde 2010-05-31 08:09:10

2

也许查找包含最p元素div元素,然后抢了先p孩子。如果没有div,请从body元件获取第一个p

这将永远有它的问题。

0

您可以使用正则表达式

string stripped = Regex.Replace(textBox1.Text,@"<(.|\n)*?>",string.Empty) 

你将他们让你可以用它来生成你的段落内容文本中去掉HTML标记。

+0

Ew ...我不认为这将工作得很好!你会得到一堆乱码......一堆标题和链接混在一起变成了无意义的东西。 – mpen 2010-05-31 06:08:24