本来想用C#调用,先来用VB.net
调用一下DLL类库。当然,这个DLL也是用VB.net自己开发的,目的吗。一个是提高运行效率,一个是觉得好玩儿。
具体实现方法如下:
第一步,制作dll.
首先打开Microsoft Visual Basic .NET
。也就是那个集成开发环境。打开后选择新建一个VB.net
项目。选择“类库”模版。
然后,修改一下自动生成的类的名称。比如Test.VB
然后当然是写一些代码了。
我的Test.VB
代码如下:
Imports System.IO
Imports System.Net
Imports System.Text
Public Class Data_Copyer
Public Url
As String
'Public
Event One_URL_Complete(ByVal Total_Rows As Integer)
'
传递进来的是一个URL地址,
返回的是这个URL地址对应的HTML返回数据
Public
Function GetHtmlCode(ByVal URL) As String
On Error GoTo Err_here
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就是网页源代码
httpResp.Close()
'下面语句去掉HTML代码中的换行符号
respHTML = Replace(respHTML, Chr(10), "")
respHTML = Replace(respHTML, Chr(13), "")
Return respHTML
Exit Function
Err_here:
'MsgBox("打开URL出现错误:" &
Err.Description)
Return "Null"
End
Function
'从传递进来的HtmlSource
文本种,进行正则表达式ZhengZe_Str匹配,返回匹配结果,一般而言是有用的
...中间的数据
Private
Function Get_ZhengZe_Resoult(ByVal HtmlSource As String)
Dim strRegex As String
strRegex =
"<>"
'ZhengZe_Str '正则表达式
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(HtmlSource)
Return m
End Function
'
分析数据内容,传递进来的数据是
...之间的数据。
'
把每个之间的数据分拆出来,并保存到数组
RowData()中。
'
这里面要分析的数据其实就是 Get_ZhengZe_Resoult
的返回值列表 m 的数据.
Private
Function Get_RowData(ByVal str_HTML_RowData)
Dim RowData() As String
'提取出的某一行的数据放到这个数组
Dim strRegex As String
strRegex = ".*?" '找到所有的正则表达式
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(str_HTML_RowData)
Dim i As Integer
strRegex = "<[^>]*>"
'去掉搜索< >
以及尖括号内容的正则表达式
ReDim RowData(m.Count - 1)
For i = 0 To m.Count - 1
RowData(i) = FormatRowData(r.Replace(m(i).Value, strRegex,
""))
Next i
'下面代码是针对特殊字段处理的,这里对IC交易网的一个页面进行处理
Dim startpos As Integer
Dim strTem As String
strTem = RowData(m.Count - 1)
startpos = InStr(strTem, "_blank"">",
CompareMethod.Text)
If startpos > 0 Then
strTem = Mid(strTem, startpos + 8, Len(strTem) - startpos -
7)
RowData(m.Count - 1) = strTem
End If
Return RowData
End Function
'格式化字符串,去掉特殊字符,截断超长字段。