我有一个毛毛病的问题,我想生成一段给定url的“描述”段落,通常是文章的开头。元描述字段是一种可行的方式,但它并不总是很好或设置不当。得到一个网页的“摘要”
公平地说,从屏幕截图的HTML中完成这件事有点麻烦。我有一个大概的想法,也许可以扫描HTML的第一个“适当”的部分,但很难说这是什么,也许像第一段含有一定数量的文字...
任何人都可以好主意? :)它没有做到万无一失
我有一个毛毛病的问题,我想生成一段给定url的“描述”段落,通常是文章的开头。元描述字段是一种可行的方式,但它并不总是很好或设置不当。得到一个网页的“摘要”
公平地说,从屏幕截图的HTML中完成这件事有点麻烦。我有一个大概的想法,也许可以扫描HTML的第一个“适当”的部分,但很难说这是什么,也许像第一段含有一定数量的文字...
任何人都可以好主意? :)它没有做到万无一失
所以,你想成为一个新的谷歌,嘿? :-)
很多网站都是“搜索引擎友好”这些天。这使您能够找到标题,然后查找下面的段落。
另外,查找列表。在某些类似标签(标签,手风琴...)的界面中有很多内容是使用有序列表或无序列表完成的。
如果失败了,也许会寻找类“内容”或“主”或组合的div,并从那里开始。
如果您使用不同的方法,请确保您保持什么工作和什么没有(甚至可以保存整个页面)的统计数据,因此您可以查看和调整您的解析和搜索方法。
作为一个方面说明,我用htmlagilitypack解析和搜索成功的HTML。那么,在leasts它打败了与正则表达式解析:-)
也许查找包含最p
元素div
元素,然后抢了先p
孩子。如果没有div
,请从body
元件获取第一个p
。
这将永远有它的问题。
您可以使用正则表达式
string stripped = Regex.Replace(textBox1.Text,@"<(.|\n)*?>",string.Empty)
你将他们让你可以用它来生成你的段落内容文本中去掉HTML标记。
Ew ...我不认为这将工作得很好!你会得到一堆乱码......一堆标题和链接混在一起变成了无意义的东西。 – mpen 2010-05-31 06:08:24
你在这里第一次听到它;)但实际上,我认为谷歌有它更容易,因为他们可能只是看短语/字在SEARCHTEXT,并采取周围的文字。 寻找第一H1,H2或和解析从那里是一个伟大的想法,谢谢。正如你所说的,可能必须使用不同技术的混合来覆盖不同的场景,但这是一个不错的开始。 我可能会开始通过用正则表达式替换掉一些标签,通过一些东西来运行它,以使其格式良好,并使用XML DOM/Xpath的东西 – Homde 2010-05-31 07:09:36
我会*强烈*建议不要使用正则表达式。正如我所说,我已经使用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
刚正则表达式剥离一些标签,我同意使用正则表达式浏览html是疯了:)虽然浏览XML树非常简单高效 – Homde 2010-05-31 08:09:10