抓取x东json接口数据时老是报“远程服务器返回错误: (500) 内部服务器错误”

ferrari 2013-05-30 09:37:34
http://p.3.cn/prices/mgets?skuIds=J_482589,J_334634,J_429084,J_713807,J_277578,J_562252,J_713813,J_749365,J_713802,J_219847,J_482591,J_766938,J_402376,J_148867,J_347294,J_277577,J_171255,J_184185,J_277576,J_406762,J_732164,J_837944,J_561600,J_176100,J_481747,J_713853,J_256391,J_481816,J_713849,J_481815,J_482590,J_597462,J_148871,J_135457,J_835922,J_407405&type=1

项目中需要抓取X东的整页价格数据,抓取URL如上。
但运行一会就会报“远程服务器返回错误: (500) 内部服务器错误”。

Accept text/html, application/xhtml+xml, */*
Accept-Language zh-CN
User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding gzip, deflate

这些信息抓取时都已经设过了,但是还是频繁的报。
不知道是不是他的接口有限制,不能调用太快还是啥情况?
有没有高手可以帮忙解决一下?
高分相送!
...全文
569 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝天630902 2013-06-16
  • 打赏
  • 举报
回复
给你弄个Excel Vba的试试看:

Sub test()
    On Error Resume Next
    With CreateObject("microsoft.xmlhttp")
        .Open "GET", "http://p.3.cn/prices/mgets?skuIds=J_482589,J_334634,J_429084,J_713807,J_277578,J_562252,J_713813,J_749365,J_713802,J_219847,J_482591,J_766938,J_402376,J_148867,J_347294,J_277577,J_171255,J_184185,J_277576,J_406762,J_732164,J_837944,J_561600,J_176100,J_481747,J_713853,J_256391,J_481816,J_713849,J_481815,J_482590,J_597462,J_148871,J_135457,J_835922,J_407405&type=1", False
        .Send
        str1 = "a=" & .responseText
        With CreateObject("MSScriptControl.ScriptControl")
            .Language = "JScript"
            .AddCode str1
            n = .Eval("a.length")
            For p = 0 To n - 1
                Cells(p + 1, 1) = .Eval("a[" & p & "].p")
                Cells(p + 1, 2) = .Eval("a[" & p & "].id")
            Next p
        End With
    End With
End Sub
叮叮当当当当 2013-06-06
  • 打赏
  • 举报
回复
引用 16 楼 summer_chen_2008 的回复:
[quote=引用 10 楼 lzxue1989 的回复:] [quote=引用 6 楼 u010347570 的回复:] Host 设置就行

req.Host = "p.3.cn";
支持这个[/quote] HttpWebRequest是没有Host这个属性的 我看图片中他定要的WebRequestModel好象是自己定义好的类。求解答![/quote] Host属性是.NET Framework4.0以后才有的。以前的版本无法使用。你可以 req.Headers.Add("Host","xxx")
summer_chen_2008 2013-06-06
  • 打赏
  • 举报
回复
引用 10 楼 lzxue1989 的回复:
[quote=引用 6 楼 u010347570 的回复:] Host 设置就行

req.Host = "p.3.cn";
支持这个[/quote] HttpWebRequest是没有Host这个属性的 我看图片中他定要的WebRequestModel好象是自己定义好的类。求解答!
summer_chen_2008 2013-06-06
  • 打赏
  • 举报
回复
引用 17 楼 u010347570 的回复:
[quote=引用 16 楼 summer_chen_2008 的回复:] [quote=引用 10 楼 lzxue1989 的回复:] [quote=引用 6 楼 u010347570 的回复:] Host 设置就行

req.Host = "p.3.cn";
支持这个[/quote] HttpWebRequest是没有Host这个属性的 我看图片中他定要的WebRequestModel好象是自己定义好的类。求解答![/quote] Host属性是.NET Framework4.0以后才有的。以前的版本无法使用。你可以 req.Headers.Add("Host","xxx") [/quote] 谢谢,确实4.0里面才有的。
叮叮当当当当 2013-06-03
  • 打赏
  • 举报
回复
引用 14 楼 ferrari 的回复:
等高手~~~
应该HttpWebRequest 对象属性设置问题 我不间断跑了10分钟,一点问题没有。 你ContentType设置上试试
ferrari 2013-06-02
  • 打赏
  • 举报
回复
等高手~~~
ferrari 2013-05-31
  • 打赏
  • 举报
回复
把返回格式给成json格式,是什么意思?
人生导师 2013-05-31
  • 打赏
  • 举报
回复
你把返回格式给成json格式,或者把响应时间设置长一点,因为如果你请求的数据大的话在默认的响应时间内没有接受到回复的话就会出现这个错误,你可以把TimeOut的设置大点试试
ferrari 2013-05-31
  • 打赏
  • 举报
回复
host设了还是不行,还是会报500错误。求高手啊
csdn_风中雪狼 2013-05-31
  • 打赏
  • 举报
回复
引用 6 楼 u010347570 的回复:
Host 设置就行

req.Host = "p.3.cn";
支持这个
ferrari 2013-05-31
  • 打赏
  • 举报
回复
应该是报这个:无法直接修改标题“Host”。
ferrari 2013-05-31
  • 打赏
  • 举报
回复
引用 6 楼 u010347570 的回复:
Host 设置就行

req.Host = "p.3.cn";
Host的这个选项好像一设就会报错。好像是说不允许修改还是什么。
ferrari 2013-05-30
  • 打赏
  • 举报
回复
有人帮忙不?顶下!
qldsrx 2013-05-30
  • 打赏
  • 举报
回复
人家不让你远程抓,所以你得模拟成它本地的请求。
叮叮当当当当 2013-05-30
  • 打赏
  • 举报
回复
Host 设置就行

req.Host = "p.3.cn";



ferrari 2013-05-30
  • 打赏
  • 举报
回复
急,再顶顶。
七神之光 2013-05-30
  • 打赏
  • 举报
回复
ferrari 2013-05-30
  • 打赏
  • 举报
回复
public string Get_Html(string url) { try { System.Net.ServicePointManager.DefaultConnectionLimit = 512; System.GC.Collect(); System.Net.HttpWebRequest req = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest; req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"; req.Accept = "text/html, application/xhtml+xml, */*"; req.Headers.Add("Accept-Language", "zh-CN"); req.Headers.Add("Accept-Encoding: gzip, deflate"); System.Net.HttpWebResponse response = req.GetResponse() as System.Net.HttpWebResponse; System.IO.Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("GB2312")); string readhtml =reader.ReadToEnd(); stream.Close(); reader.Close(); if (response != null) { response.Close(); } if (req != null) { req.Abort(); } return readhtml; } catch (Exception ex) { SaveLog(ex.Message.ToString()); SaveLog("HTML下载:URL=" + url + ";MSG=" + ex.Message.ToString()); return ""; } }
jiaoshiyao 2013-05-30
  • 打赏
  • 举报
回复
不会吧 你贴一下代码

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧