抓取网页信息,并用正则表达式分析后得到信息。

本文介绍了一种利用正则表达式从HTML页面中抓取并解析城市列表的方法,通过实例展示了如何创建XML文档并使用正则表达式提取特定格式的城市代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Imports System.Xml
Imports System.Text.RegularExpressions
Public Class Form1

    
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        
Try
            
Dim objXml As New XmlDataDocument

            
Dim objXmlElementCity As New XmlDataDocument
            
Dim Content As String = ""

            objXml.LoadXml(
"<root />")
            
'抓取所有城市列表

            Content 
= GetContent("http://localhost/CMA/index.htm""gb2312")

            
'抓到内容后,?始分析数据

            
Dim regex As System.Text.RegularExpressions.Regex
            
Dim mc As System.Text.RegularExpressions.Match


            
Dim objXmlCityList As XmlElement
            
Dim partten As String = ""
            
Dim cityUrl As String = ""
            
Dim parttenCity As String = ""

            
Dim i As Long = 1
            
Dim j As Long = 1

            
'Dim mcCity As System.Text.RegularExpressions.Match

            objXmlCityList 
= objXml.CreateElement("citylist")
            
Dim s As String
            s 
= "2005-2-21"
            
'Regex reg = new   Regex(@"(?<y>d{4})-(?<m>d{1,2})-(?<d>d{1,2})",RegexOptions.Compiled); 
            'Match match = reg.Match(s); 
            'int year = int.Parse(match.Groups["y"].Value); 
            'int month = int.Parse(match.Groups["m"].Value); 
            'int day = int .Parse(match.Groups["d"].Value); 
            'DateTime time = new DateTime(year,month,day); 
            'Console.WriteLine(time); 
            'Console.ReadLine(); 


            
'partten = "^c[1] = new Array(" + """" + "6" + ";"


            
' c[1] = new Array("
            'partten = "" + "(?<citycode>[0-9]{5,})" + """"
            'partten = "(?<citycode>[0-9]{5,})"
            '<citycode>
            'partten = "c[[0-9]{1,2}].*;" ' = new Array" + ".*" + ");"
            'partten = "^[0-9]{2,3}.[0-9]{2,3}.[0-9]{2,3}.[0-9]{2,3}"

            partten 
= "(?<citycode>" & """" & "[0-9]{5}" & """" & ")"
            regex 
= New System.Text.RegularExpressions.Regex(partten, RegexOptions.Compiled Or RegexOptions.IgnoreCase)
            objXmlCityList.SetAttribute(
"vdatetime", DateTime.Now.ToShortDateString())

            mc 
= regex.Match(Content, 0)
            
MsgBox(mc.Groups("citycode").Value)

            
'c.Groups(
            'Do While mc.Success

            
'    'MsgBox(mc.Groups("citycode").Value)
            '    MsgBox(mc.ToString)
            '    'MsgBox(mc.Index)

            
'    'objXmlCityList.AppendChild(
            '    mc = regex.Match(Content, mc.Index + mc.Length)
            '    mc.NextMatch()
            'Loop



        
Catch ex As Exception

        
End Try



    
End Sub



    
Private Function GetContent(ByVal url As StringByVal encoding As StringAs String
        
Dim str As String = ""
        
Dim client As New Net.WebClient
        client.Headers.Add(
"Accept""image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*")
        client.Headers.Add(
"Accept-Language""zh-cn")
        client.Headers.Add(
"UA-CPU""x86")
        client.Headers.Add(
"User-Agent""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)")
        
Try
            
Dim buffer As Byte()
            buffer 
= client.DownloadData(url)
            
If (encoding = "utf-8"Then
                
str = System.Text.Encoding.GetEncoding("utf-8").GetString(buffer, 0, buffer.Length)
            
Else
                
str = System.Text.Encoding.GetEncoding("gb2312").GetString(buffer, 0, buffer.Length)
            
End If
            
Return str

            
Return str
        
Catch ex As Exception
            
Return ""
        
End Try
    
End Function


End Class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值