帝王谷资源网 Design By www.wdxyy.com
昨天在采集某一个网站的时候,采集程序出错了。
是自写的采集程序。
经过搜索以后,查到一些没有用的结果,后来发现,用Msxml2.ServerXMLHTTP替换掉Msxml2.XMLHTTP,问题成功解决。
以下是分析排错过程。
老是采集一段时间就挂了,指定资源下载失败,或者拒绝访问。
后来直接全部是拒绝访问。

一开始,认为,对方服务器做了防采集设置,比如有时间限制之类的。

于是更改程序,原先是直接获取列表页,然后持续循环获得文章列表。改了采集文件结构,
原来是就一个文件,类,数据库连接,数据处理全部在一个文件里,再采集某一篇文章的时候,后天加了一个时间循环。等待5秒的。代码如下
复制代码 代码如下:
sTime=Timer()
dTime=Timer()-sTime
do while dTime < 5
dTime=Timer()-sTime
loop

确实是能等待5秒钟,但是很快就发现,这个循环太过消耗CPU资源,一到这个循环,CPU占用率持续100%,于是马上放弃这个方案。
另做了一个文件。只根据文章URL抓取文章的相关内容并写入数据库,写入完毕后输出自动跳转代码。
核心思想就是用了<meta http-equiv="refresh" content="5;url=someurl.asp">
这是一个定时跳转的代码,相信大家都很熟悉。
我的原理做法就是,用一开始的文件,抓取所有的文章连接地址,以及相关导航代码,保存到数据库中。
然后用新做的抓取文章内容的程序,读取数据库记录,逐条进行采集。
数据库记录中有一个flag标记,tinyint类型,默认是0,采集成功更新为1,失败更新为2
这样,每次从数据库中读取一条未采集的数据,也就是读取flag=0的数据,进行操作。操作完毕等待5秒跳转到自身。

想法跟思路是很好的。文章URL数据库也采集准备好了,一上采集文章具体内容,又出错了。一直是msxml3.dll 错误 '80070005'
拒绝访问的错误。
那个郁闷,想开一晚上机器,自动采集,破灭。
今天早上来搜索查询资料,查询到的绝大多数都是无用信息。
基本上都是说权限问题。

msxml3.dll 错误 '80070005'

拒绝访问。

解决办法:

赋予程序所在文件夹 internet 来宾帐号(IUSR_WEB)可写。

做法:

选择cachefile-属性-安全-添加(IUSR_WEB)-写入
都是这么说的。莫名其妙的,我的是FAT32的不存在NTFS格式的那种安全权限问题,IIS设置也正常,
我的问题是采集一部分就拒绝访问。肯定不是这个问题。
继续搜索,找到另一个方案说是,用Msxml2.XMLHTTP替换掉Microsoft.XMLHTTP,我本来用的就是Msxml2.XMLHTTP的
继续搜索。找到最终解决方案应该是用Msxml2.ServerXMLHTTP
先前也搜到这个结果,由于大意,没有及时注意到,以下是搜索过程找到的有用的相关资料。

代码如下:
复制代码 代码如下:
PostUrl=http://www.xxx.com/
Server.ScriptTimeOut=20
Set oXMLHttp = createObject("Microsoft.XMLHTTP")
Call oXMLHttp.Open("get", PostUrl, false)
Call oXMLHttp.Send("")
sHtmlStr = oXMLHttp.responseBody
Set oXMLHttp = nothing

初步判定可能是打开的页面有跳转的原因,解决办法是用
MSXML2.ServerXMLHTTP
替换掉
Microsoft.XMLHTTP
即可解决。

另外在CSDN上找到这么一段代码
复制代码 代码如下:
ServerURL=PostUrl
Set Mail1 = Server.CreateObject("CDO.Message")
Mail1.CreateMHTMLBody ServerURL,31
AA=Mail1.HTMLBody
Set Mail1 = Nothing
Response.Write AA

试了一下,也可以用,拷过来收藏



复制代码 代码如下:
<%
' 定义变量
Dim objXmlHttp
Dim strHTML

'这是Msxml3.0中的一个稳定版本.
'使用Msxml2.ServerXMLHTTP,不使用Msxml2.XMLHTTP
Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

' 如果你发现以下错误
' msxml3.dll error '80070005'
' 存取被拒绝.
' 可能是上网时使用了代理产生了错误
' 使用 proxycfg.exe 工具. :
'
' proxycfg -d
' 检查是否采用了代理上网
' 同时可以参看这个帖子: http://www.asp101.com/forum/display_message.asp?mid=51841
'

' 这个版本太旧且不稳定
'Set objXmlHttp = Server.CreateObject("Msxml2.XMLHTTP")

' 现在我们开始发送请求.
' 套用微软的话来讲: 初始化一个请求,并且指定该请求的方法(get,post等等),
' URL, 和权限验证信息(用户名,密码,等等)。
' 格式:
' .open(bstrMethod, bstrUrl, bAsync, bstrUser, bstrPassword)
'objXmlHttp.open "GET", "http://www.yahoo.com", False
objXmlHttp.open "GET", "http://www.yahoo.com", False

' 以直接的方式发送请求出去.
objXmlHttp.send

' 打印返回状态:
Response.Write "Status: " & objXmlHttp.status & " " _
& objXmlHttp.statusText & "<br />"

' 获取响应返回的文本.
' 这个对象本身是用来操作XML的,所以具备以下属性:
' responseBody, responseStream, 和 responseXML.
' 但是我们现在只需要文本信息
strHTML = objXmlHttp.responseText

' 但这个对象实例不再使用时,需要清除这个对象实例.
Set objXmlHttp = Nothing

' 现在我们要做的就是显示我们获取到的HTML.
' 首先看浏览器解释的效果
' 然后显示其源码
' 下面的类似<h1>s 和 <table>s只是为了展现获取到的内容,本身不属于获取的内容.
%>

<h1>Here's The Page:</h1>
<table border="1" bgcolor="#FFFFFF">
<tr><td>
<%= strHTML %>
</td></tr>
</table>

<br />

<h1>Here's The Code:</h1>
<table border="1" bgcolor="#FFFFFF">
<tr><td>
<pre>

<%= Server.HTMLEncode(strHTML) %>
</pre>
</td></tr>
</table>
标签:
msxml3.dll,拒绝访问

帝王谷资源网 Design By www.wdxyy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
帝王谷资源网 Design By www.wdxyy.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。