2011-03-01 79 views
0

我有一個字符串,其中包含通過WinHttpReadData下載的HTML頁面。該字符串是一個簡單的char*
我一直在想辦法只提取那個頁面上的URL。舉個例子,想象一下你正在谷歌搜索WinHTTP這個詞,並且你會看到一個充滿鏈接的HTML頁面。我現在需要檢查每個鏈接,將其解壓並保存到文件中。解析HTML頁面中的URL

我試着搜索HREF,http://和其他關鍵字,然後嘗試提取字符串一直到</a>,但它不是真的工作。也可以從URL中獲取描述(如<a href="http://someurl.com/somepage.html">some text</a>獲得some text),但它不像URL本身那麼重要。

這裏棘手的是我不能使用第三方庫,因爲我不想處理許可證等。

有關如何做到這一點的任何想法? WinHTTP提供了一種方法來做到這一點?在C中(而不是 C++)?

感謝您的幫助

+0

「因爲我不想處理許可證之類的問題」 - 只需找到根據LGPL許可的HTML解析器即可。那麼只要你不修改庫本身,你基本上可以使用它,而不必關心任何東西。 – ThiefMaster 2011-03-01 14:38:52

+0

已經嘗試過,找不到一個是BSD,MOZILLA或LGPL。感謝壽。 – 2011-03-01 14:49:29

回答

0

也許你應該去的PCRE C API(上PCRE site可用)

你需要會像正則表達式:

<a.*?href=[""'](?<url>.*?)[""'].*?>(?<name>.*?)</a>

這應在組結構中映射太多的組<url><name>

+0

我也使用正則表達式。如果您使用的是C++ 0X,它在STL中內置了對它的支持。 – RedX 2011-03-01 14:39:35

+0

感謝您的提示。我剛剛下載了PCRE,但從包中的所有文件中找出要使用的內容是一團糟。你介意指向我需要的文件嗎?或者我需要他們全部? – 2011-03-01 14:46:14

+0

我不想聽起來粗魯,但README應該是一個好的開始。我敢打賭,這些資源是用make或cmake編譯進庫的。然後,您必須導入描述庫外部接口的頭文件,並在構建時鏈接。也可以在網站或谷歌上查看文檔。你一定會找到例子。對不起,更確切地說,但我目前不使用這個庫。 – 2011-03-01 15:59:26