2010-05-31 54 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