【发布时间】:2011-09-04 19:18:45
【问题描述】:
我正在尝试从 craigslist HTML 页面中提取一些数据,但我似乎遇到了一个奇怪的错误 - 每隔一段时间,我尝试使用 NSURLRequest 加载的页面会以某种奇怪的形式返回数据,当转换为可解析的字符串时,返回null。但是,我无法始终如一地重现它——它会突然停止工作,然后我会在一个小时后再次尝试它,它会完美地工作,然后一段时间后它会再次停止工作。有谁知道可能是什么原因造成的?我正在使用带有“didReceiveData”和“didReceiveResponse”委托方法的异步 NSURLRequest。如果我将 NSURLResponse 转换为 NSHTTPURLResponse 并检查响应代码,我会得到 200,这意味着没有问题。但是当我用响应数据初始化一个字符串时,它返回null,我显然无法解析它。
似乎最常这样做的网址是:http://sarasota.craigslist.org/app/
我已经尝试弄乱请求的 User-Agent 标头、缓存策略以及我能想到的一切……但似乎没有任何解决办法。
【问题讨论】:
-
你看过响应数据了吗?它看起来像什么?
-
@Matt 如果我直接记录传入的增量数据,我会得到一堆乱码,这意味着那里有数据,但是如果我将其转换为带有
[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]的字符串然后记录它返回的字符串null。 -
嗨。我想知道 craigslist 是否检测到连接以解析数据并限制活动?我没有查看 craigs,但您是使用特定的 API 还是只是连接和抓取?
-
@MightyLeader 我认为可能也是这种情况,因为我只是抓取 HTML 页面并抓取它。然而,似乎只有几个 Craigslist 类别表现出这种行为 - 绝大多数其他类别在我每次提出请求时都没有可靠加载的问题。 (即我发布的示例 URL 是针对“电器”类别的——“电子”类别(以及大多数其他类别)始终可靠地加载,无论我多久点击一次)
-
我猜你可以尝试检测空响应并重试?
标签: iphone null nsurlrequest