1

私は、Web に投稿された列車の時刻表から出発時刻のリストをスクリーン スクレイピングするプロジェクトに取り組んでいます。データにアクセスするためにそのような大雑把な方法を使用していなければ、これははるかに簡単になると思いますが、利用可能な API はありません。これは、私が公にリリースすることを期待している種類のものというよりも、学習プロジェクトのようなものです。

とにかく、私が読んでいるスケジュールは、12 時間形式で表示されますが、AM/PM はありません (たとえば、9:43 だけです)。時刻をおおよその UNIX タイムスタンプとしてデータベースに保存しています。つまり、時刻が AM か PM かを判断できるスクリプトが必要です。

私がスクレイピングしているデータには、2 時間前から 6 時間後までの時間のリストが含まれている可能性があります。したがって、スクリプトが実行される午前 9 時に、次の午後 2 時の列車が一覧表示され、時間通りに出発しなかった場合、午前 7 時の列車がまだ乗車している可能性があります。

評価される時間と、「推測」の基になる現在のシステム時間の 2 つのパラメーターを取る関数を作成しました (関数に時間自体を取得させることができることはわかっていますが、単体テストを作成しようとしていました)。それはひどく失敗したので、私はそうしました)。ここに投稿したいのですが、実際にはうまくいきません。皆さんからのガイダンスやヒントを参考にして、新たに始めたいと思います。

誰でも私を助けることができますか?これにアプローチする良い方法は何ですか?

4

3 に答える 3

1

ページをスクレイピングした時間を知っていて (スクレイピングする必要があります)、リストされている時間を知っていて (明らかに知っています)、その時間がページ アクセスの -2 から +6 であることがわかっている場合 (たとえば、スクレイピングした時間)ページ)... 問題が発生した場所がわかりません。必要な情報はすべて揃っているようです。

11:30 (AM) にページをスクレイピングします。2時15分の出発が記載されています。午前 2 時 15 分と午後 2 時 15 分の間を選択すると、午前 11 時 30 分 (午前 11 時 30 分) から 6 時間以内にあるのは 2 つのうちの 1 つだけです。10:30 のエントリを見た場合、11 時間後の到着はリストされないため、「1 時間前」でなければならないことがわかります (説明によると)。

または、何か不足していますか?

于 2010-11-10T01:52:37.230 に答える
0

OK、このスクリプトは列車を初期化するために実行されることを忘れていたので、「2 時間前」ということは問題ではありません。これが私が思いついたものです、それはうまくいっているようです:

 function convertTime($input, $currentHour) {
    if ($currentHour >= 8 && $currentHour < 12 && $input < 8) {
        $input += 12;
    }
    if ($currentHour > 12 && $currentHour < 20 && $input < 12) {
        $input += 12;
    }
    if ($currentHour > 20 && $currentHour < 24 && $input > 8) {
        $input +=12;
    }
$return $input;
}
于 2010-11-10T03:07:25.157 に答える
0

伝統的に、列車の時刻表は午前と午後を区別し、太字と細字で区別します。私が覚えている限りでは、午後は常に太字です。ソースがそうである場合は、テキストが <b> または <strong> 内にあるかどうかを追跡してください。

于 2010-11-10T02:16:58.160 に答える