導航:首頁 > 編程語言 > javamatchcollection

javamatchcollection

發布時間:2023-01-18 15:38:00

『壹』 怎麼樣使用HttpWebRequest和正則表達式提取網頁中的鏈接

用HttpWebRequest和正則表達式提取網頁中的鏈接
用HttpWebRequest取得網頁源代碼
Dim url As String=" http://www.sina.com "
Dim httpReq As System.Net.HttpWebRequest
Dim httpResp As System.Net.HttpWebResponse
Dim httpURL As New System.Uri(url)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
httpReq.Method = "GET"
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
httpReq.KeepAlive = False \' 獲取或設置一個值,該值指示是否與 Internet 資源建立持久連接。
Dim reader As StreamReader = _
New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312"))
Dim respHTML As String = reader.ReadToEnd() \'respHTML就是網頁源代碼
用正則表達式取得鏈接地址
Dim strRegex As String = "//([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?" \'這就是表達式
Dim r As System.Text.RegularExpressions.Regex
Dim m As System.Text.RegularExpressions.MatchCollection
r = New System.Text.RegularExpressions.Regex(strRegex, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
m = r.Matches(respHTML)
Dim i As Integer
For i = 0 To m.Count - 1
form1.DefInstance.ListBox1.Items.Add(m(i).Value) \'form1.DefInstance是form1的共享屬性和實例
Next i
form1.DefInstance.ListBox.Visible = True \' 設置ListBox為可見
form1.DefInstance.ListBox.Sorted = True \' 對ListBox各元素進行排序
form1.DefInstance.ListBox1.Items.Add(m(i).Value) \'form1.DefInstance是form1的共享屬性和實例, 共享成員如果是方法或屬性,我們不用創建實例就可以直接用『類名 .共享成員\'的方法進行調用。設置方法如下:
Private Shared m_vb6FormDefInstance As form1
Public Shared Property DefInstance() As form1
Get
If m_vb6FormDefInstance Is Nothing OrElse m_vb6FormDefInstance.IsDisposed Then \'判斷窗體實例是否存在
m_vb6FormDefInstance = New form1
End If
DefInstance = m_vb6FormDefInstance
End Get
Set(ByVal Value As form1)
m_vb6FormDefInstance = Value
End Set
End Property
去除重復地址
Dim countForms As Integer \'以下代碼去除重復地址
Dim lstForms() As String
Dim CurId As Integer
With formBrow.DefInstance.ListBox1
ReDim Preserve lstForms(0)
lstForms(0) = .Items(0) \'新數組的第一項和list的第一項相同
For countForms = 1 To .Items.Count - 1 \'items.count得到list1中的項目數
CurId = UBound(lstForms) \'curid為newlist中有項目數
If .Items(countForms) <> lstForms(CurId) Then \'如果舊表第二項不等於新表最大項
ReDim Preserve lstForms(CurId + 1) \'定位到新表第二項
lstForms(CurId + 1) = .Items(countForms) \'新表第二項等於舊表第二項
End If
Next countForms
.Items.Clear() \'刪除舊表所有項
For countForms = 0 To UBound(lstForms) \'把新表寫入舊表
.Items.Add(lstForms(countForms))
Next countForms
End With
把地址導出為XML
可擴展標記語言 (XML) 是一種提供數據描述格式的標記語言。該語言使跨越多個平台進行更准確的內容聲明和獲得更有意義的搜索結果變得更加容易。此外,XML 實現了表示與數據的分離。例如,在 HTML 中,使用標記來告訴瀏覽器將數據顯示為粗體或斜體;而在 XML 中,標記只用於描述數據,例如城市名、溫度和大氣壓。在 XML 中,使用樣式表(例如,可擴展樣式表語言 (XSL) 和層疊樣式表 (CSS))在瀏覽器中顯示數據。XML 使數據與表示及處理分離開來,通過應用不同的樣式表和應用程序,使您能夠根據需要顯示和處理數據。
XmlTextWriter 是 XmlWriter 類的實現,該類提供將 XML 寫入文件、流或 TextWriter 的 API。該類有許多驗證和檢查規則,以確保所編寫的 XML 的格式正確。當與某些規則發生沖突時,將會引發異常,並且這些異常應該被捕獲。XmlTextWriter 有不同的構造函數,每個函數指定寫入 XML 數據的不同類型的位置。下面代碼使用的是將 XML 寫入文件的構造函數。
首先使用 Formatting 屬性指定正被編寫的 XML 數據的格式。通過將此屬性設置為 Indented,編寫器使用 Indentation 和 IndentChar 屬性縮進子元素。
代碼顯示了與每個 XML 節點類型相對應的 XML 編寫方法。例如,編寫一個元素將調用 WriteElementString 方法,編寫一個屬性將調用 WriteAttributeString 方法。對於嵌套級別,可以使用 WriteStartElement/WriteEndElement 對;如果要創建較復雜的屬性,則可以使用 WriteStartAttribute/WriteEndAttribute 對。
請注意代碼如何使用 WriteStartDocument 方法編寫帶版本號「1.0」的 XML 聲明。如果要讓編寫器檢查該文檔的格式是否正確(先是 XML 聲明,序言中的 DOCTYPE,只有一個根級別元素,等等),您必須在調用任何其他編寫方法之前,調用此可選的 WriteStartDocument 方法。接著,此代碼調用 WriteDocType 方法編寫名為「urls」的文檔類型。WriteDocType 調用中的第三個參數指定編寫器將編寫 SYSTEM「urls.dtd」。編寫完成後,XML 文件指示有一個要根據其進行驗證的外部 DTD。
最後,代碼調用 Flush 方法將 XML 數據保存到文件,然後才調用 Close 方法。(雖然此示例確實只需要 Close 方法,但是也存在這樣的情況,即需要保存所生成的 XML,並且需要重復使用編寫器。)
要檢查 XmlTextWriter 的輸出,可通過用 XmlTextReader 讀取生成的文件來執行往返測試,以驗證 XML 的格式是正確的。
Private Sub saveXml()
Dim saveFileDialog1 As New SaveFileDialog
saveFileDialog1.Filter = "xml|*.xml"
saveFileDialog1.Title = "Save a xml File"
saveFileDialog1.ShowDialog()
If saveFileDialog1.FileName <> "" Then\'如果文件名不等於空白
Dim fileName As String = saveFileDialog1.FileName
If Not System.IO.File.Exists(fileName) Then \'如果不存在同名文件
Dim myXmlTextWriter As XmlTextWriter = New XmlTextWriter(fileName, Nothing)
myXmlTextWriter.Formatting = System.Xml.Formatting.Indented\'設置縮進
myXmlTextWriter.WriteStartDocument(False)
myXmlTextWriter.WriteDocType("urls", Nothing, "urls.dtd", Nothing)
myXmlTextWriter.WriteComment("This file save the Urls")\'注釋
myXmlTextWriter.WriteStartElement("urls")\'開始元素
myXmlTextWriter.WriteStartElement("url1", Nothing)\'開始元素
myXmlTextWriter.WriteAttributeString("now", Now)\'在屬性里記錄時間
For countAll As Integer = 0 To ListBox1.Items.Count - 1
Dim title As String = Strings.Right(ListBox1.Items.Item(countAll), 3)\'取URL後三字
Dim body As String = lstMuLu.Items.Item(countAll)
myXmlTextWriter.WriteElementString(title, Nothing, body)
Next
myXmlTextWriter.WriteEndElement()
myXmlTextWriter.WriteEndElement()
\'Write the XML to file and close the myXmlTextWriter
myXmlTextWriter.Flush()
myXmlTextWriter.Close()
End If
End If
End Sub

『貳』 如何用Java正則表達式提取html中所有的文本和超鏈接,然後分別存入txt文件和資料庫

您好,您這樣:提取鏈接的標簽文本和url地址
將Html文件代碼傳入string參數s,代碼如下:

private void Reg_A_Href(string s)
{
string str = s;
Regex re = new Regex(@"<a[^>]+href=\s*(?:'(?<href>[^']+)'|""(?<href>[^""]+)""|(?<href>[^>\s]+))\s*[^>]*>(?<text>.*?)</a>", RegexOptions.IgnoreCase | RegexOptions.Singleline);

MatchCollection mc = re.Matches(str);
Console.WriteLine(mc.Count);
foreach (Match m in mc)
{
info_Add("[href] " + m.Groups["href"].Value);
info_Add("[text] " + m.Groups["text"].Value);
Console.WriteLine("{0}:{1}", m.Groups["href"].Value, m.Groups["text"].Value);
}

}

閱讀全文

與javamatchcollection相關的資料

熱點內容
win10電腦怎麼休眠不斷網 瀏覽:530
如何查到網站的伺服器 瀏覽:225
編程怎麼確定一個數的位數 瀏覽:362
如何安裝ae腳本文件夾 瀏覽:914
商品驗偽用什麼APP查 瀏覽:350
請問大數據與會計專業做什麼的 瀏覽:77
如何修改數據上年結轉 瀏覽:6
win7一直配置文件重啟 瀏覽:124
佳能ir2525i網路掃描 瀏覽:283
win10指紋無法識別 瀏覽:646
jsp中怎麼引入js文件 瀏覽:925
文件名構成部分 瀏覽:484
興國互聯網app有哪些 瀏覽:475
北京時間票房多少票房統計數據 瀏覽:750
探探文件夾是哪個 瀏覽:429
如何分類微信文件 瀏覽:446
城市天際線win10 瀏覽:813
運動APP跑步如何抓作弊 瀏覽:57
微信中秋節動態祝福語 瀏覽:703
練英語的網站哪個好 瀏覽:894

友情鏈接