0

HTMLファイルからデータをダウンロードしてスクレイピングするアプリを作成しました。アプリは何ヶ月も正常に動作していましたが、ここ数日で停止しました.

これがコードです...

NSString* urlString = [@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=" stringByAppendingString:portCode];
urlString = [urlString stringByAppendingString:@"&PredictionLength=7"];
NSURL* easyTidesUrl = [NSURL URLWithString:urlString];
NSData* easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl];

NSURL オブジェクトを調べると、URL が正しく設定されておらず (文字列にエラーがあります)、NSURL オブジェクトは として表示されます。過去に同様の質問が寄せられたことは知っていますが (解決策を試してみましたが、この場合は機能しません)、アプリが正常に機能していたのに、何もせずに壊れてしまったのは奇妙に思えます!


ここにいくつかのコードがあります...基本的に動作を停止した部分は関数の最初の部分です...

+(void)getTides:(NSMutableArray *)tidalDateArray withPortCode:(NSString*)portCode
{
    NSString *parameter = [portCode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *urlString = [NSString stringWithFormat:@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=%@&PredictionLength=7", parameter];
    NSURL *easyTidesUrl = [NSURL URLWithString:urlString];
    NSData *easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl];

    TFHpple* tidesParser = [TFHpple hppleWithHTMLData:easyTidesHtmlData];

    NSString* easyTidesXPathQueryString = @"//div[@class='HWLWPanel']/table/tr/th[@class='HWLWTableHeaderCell']";
    NSArray* tideDateNodes = [tidesParser searchWithXPathQuery:easyTidesXPathQueryString];

    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];

    NSCalendar *gregorian = [[NSCalendar alloc]
                          initWithCalendarIdentifier:NSGregorianCalendar];
4

3 に答える 3

1

Easytide がダウンしているように見えるので、API の問題ではないかもしれません!

于 2013-07-09T15:40:12.770 に答える
0

portCode変数には、スペースなどの不正な憲章が含まれている可能性があります。

NSString *parameter = [portCode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *urlString = [NSString stringWithFormat:@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=%@&PredictionLength=7", parameter];
NSURL *easyTidesUrl = [NSURL URLWithString:urlString];
NSData *easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl];
于 2013-07-09T13:56:05.463 に答える
0

結局、問題は非常に単純なもののように見えます... URL自体が間違っていました-彼らがそれを変更したのか、それともコードで変更されたのかわかりません...しかし、すべての助けとコードをありがとう改善...

于 2013-07-10T15:48:01.257 に答える