2010年4月25日replace替我解5u采集燃眉之急
因为自己做了一个b2b站,因为此类站点后来我也想通了,没有数据是根本不行的,一个人要是去更新W数条信息,那不的累死啊,想来想去还是决定采集,虽然这样子对其他站很是不公平,但是毕竟不这样子做的话,站全不前途可言.
几经周折算是找到了5u的一个采集插件,但是问题居多,不过工夫不负有心人,总算是把数据采集了。但是我遇到一个奇怪的现象,有一个站死活是采集不了的,我也不知道是为什么,只知道不行!一直僵持到现在也没有找到合适的解决办法.
明明规则是对的,因为我点演示后,站点明明是可以采集的,但是真正的采集的时候就会提示目标采集不到标题,真郁闷的要死.无奈之下简直要放弃!阳光,阳光...哈哈,在这要感谢一人那就是秋风冷饮大侠,他的灵感太强大了,一语惊醒梦中人下面看看他说什么了.
他让我对比,演示里的地址和采集时候的地址,初看是一样的.但是他还是让我自己看:
http://www.hebgc.com/?a=detail_zbgg&xh=149989 采集演示里的地址
http://www.hebgc.com/?a=detail_zbgg&xh=149616 真正采集时候的地址
这个时候我才发现原来不细心就是不行!在采集的时候地址多出了&,怪不得采集不了呢.现在要做的就是把真正采集的时候地址改成和演示里的一致了,就可以采集了。既然知道是那的问题了,那么动工!下面我只贴出部分相关代码:
tempStr = Split(tempStr2,"|")
i=lBound(tempStr)
j=uBound(tempStr)
For i=i To j'开始采集列表页
Call IDtext("list","采集列表网页: "& tempStr(i))
Response.Flush
vHtmlCode = MyCollect.GetRemoteData(tempStr(i),col_cls.vCharset) '采集目标网页
vHtmlCode = MyCollect.ReplaceTrim(vHtmlCode) '替换字符
vHtmlCode = MyCollect.CutFixed(vHtmlCode,Trim(iList(0)),Trim(iList(1))) '#找到列表内容
vHtmlCode = MyCollect.FindMatch(vHtmlCode,Trim(iUrl(0)),Trim(iUrl(1))) '#找到网址,以 ||| 分割
tempStr2 = Split(vHtmlCode,"|||")
m = lBound(tempStr2)
n = uBound(tempStr2)
For m=m to n
num = num+1
bUrl = MyCollect.FormatRemoteUrl(Trim(tempStr(i)),Trim(tempStr2(m))) '格式化远程地址
Sql = "Insert Into [CollectList](aID,aUrl)Values("& ID &",'"& bUrl &"')" '加入到库中
MyConn.execute(sql)
Call IDtext("url","目标正文网页: "& bUrl)
Response.Flush
Next
Next
'#判断采集结果
If num=0 then
Call OutErrors("没有采集到任何网址列表数据!! 请重新设置!")
response.end
else
Session("OK_NUM")=0
Session("ERR_NUM")=0
Call IDHtml("load","<font color=red>采集到网址数据:"& num &"<br>3s后开始采集...</font>")
Response.write "<div style=""float:left;width:100%;padding-top:20px;"" id=""btn""><input value=""停止采集"" type=button onclick=""location='?Act='""></div>"
Response.Write "<meta http-equiv=""refresh"" content=""3;URL=?Act=Collect2&ID="& ID & """ />"
Response.Flush
Response.end
End if
End Sub 'Collect
以上代码就是实现采集地址的地方了,细到:
For m=m to n
num = num+1
bUrl = MyCollect.FormatRemoteUrl(Trim(tempStr(i)),Trim(tempStr2(m))) '格式化远程地址
Sql = "Insert Into [CollectList](aID,aUrl)Values("& ID &",'"& bUrl &"')" '加入到库中
MyConn.execute(sql)
Call IDtext("url","目标正文网页: "& bUrl)
Response.Flush
Next
技术重点提示:这里需要用到asp里的一个函数那就是replace,这个函数实现了把字符串替换成其他的字符串,具体的用法和说明请访问:http://zhidao.baidu.com/question/89071944.html?fr=ala0.
更改后的代码:
For m=m to n
num = num+1
bUrl = MyCollect.FormatRemoteUrl(Trim(tempStr(i)),Trim(tempStr2(m))) '格式化远程地址
bUrl = replace(burl,"&","&")
Sql = "Insert Into [CollectList](aID,aUrl)Values("& ID &",'"& bUrl &"')" '加入到库中
MyConn.execute(sql)
Call IDtext("url","目标正文网页: "& bUrl)
Response.Flush
Next
其实只是加了一句bUrl = replace(burl,"&","&"),然这句话就是要把&替换为&了.这样子演示和采集里的地址一样了,结果就是我们成功的采集了对方数据!
你浏览的文章是 - 《replace替我解5u采集燃眉之急》! 文章出处:http://www.zheteng.net.cn/news/174.html 折腾专业针对河北seo提供网站优化服务。并对企业seo有着独到的眼光。详情咨询客服QQ:8972812。
