私はウェブサイトからデータをスクラップする個人的なアプリを書いています。現在、ページを分析する前に全ページを読み込み、これらのページは300〜600 KiBの範囲で表示できます。私がテストした10ページは合計で最大4 MiBです。ページには動的コンテンツが含まれているため、データがどこから始まるのか正確にはわかりません。デリミタがあるので、データを一度にどこにスキャンしたのか分かります。必要な部分だけをダウンロードする方法はありますか?これにより、これらの10ページの合計ダウンロード数が2 MiBに削減されます。C#を使用してウェブページの最初の部分(長さが不明)のみをダウンロードする
1
A
答えて
2
ここでは、ストリームから読み込んで、自分自身と一致する10バイトの区切り文字に一致するまでの例を示します。具体的な内容はあなたの責任ではありますが、これはあなたが望むものを達成するための簡単な方法だと思います。
StringBuilder sb = new StringBuilder();
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://example.com");
using (var resp = request.GetResponse())
{
using(StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
char[10] block;
sr.ReadBlock(block, 0, 10);
if (block.CharEquals(myDelim))
break;
sb.Append();
}
}
// Process the StringBuilder here.
CharEquals
は、2つの文字配列が同じであれば、単純に比較して拡張メソッドであることに注意してください - それに特別なことは何もありません。
3
だけではなく、WebClient
のWebRequest
を使用し、その後、あなたが必要なストリームからのデータのみを取得することができます。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.com");
using (var response = request.GetResponse())
using(Stream stream = response.GetResponseStream())
{
//..
}
0
は、すべてのページをこするから、あなたのロジックを変更することができないことだけが必要となりますそれらを処理してデータを見つける - >ページ、プロセスを読み込み、それに必要なデータが含まれていない場合は、次のページに進みます。
コンテキストに関する知識が豊富であれば、最良の結果を得るために最も可能性の高いページをクロールして最適化するように、コードをクロールする方法をカスタマイズすることができます。
関連する問題
- 1. 不明な長さのnumpy配列を初期化する
- 2. ベクトルの最長順序部分の最初のインデックス
- 3. ソケットの読み取りと長さのデータが不明確
- 4. Entity Frameworkコード部分キーを使用した最初のカスタムマッピング
- 5. 部分特殊最初の非可変長テンプレートパラメータを必要
- 6. ウェブページの最初のものとしてコードを読み込みますか?
- 7. ヘッダーを使用してファイルを部分的にダウンロードする
- 8. ウェブページの一部のみでangular2を使用する方法
- 9. 部分的なウェブページのコンテンツのみを表示するアンドロイドウェブビュー
- 10. 最初の長さが与えられた2つのリストを分割する
- 11. Pythonのforループを通して最初の繰り返しでのみ実行されるコードの部分
- 12. 正規表現を使って、最初の部分がn桁だけの部分を探す
- 13. オブジェクト名の最初の部分にjavascript変数を使用します。
- 14. C#.NET 3.5 WinFormsを使用した部分透明度?
- 15. 引数 'pattern'の長さが1より大きく、最初の要素のみが使用されます - GSUB()
- 16. ウェブページの一部としてダウンロードされたjavascriptを変更する
- 17. SQLクエリ内でPHPを使用して、クエリの次の部分がStackOverflowの最初の投稿である
- 18. 変数を分割して最初の部分を保持する
- 19. ウェブページの下部にDIVを100%の高さでオーバーフローさせる方法:CSSのみを使用して自動?
- 20. ffmpegはオーディオファイルの最初の部分のみをセグメント化します
- 21. 最初のiPhoneアプリが不明な理由でクラッシュする
- 22. aiohttp本体の最初のnバイトのみをダウンロードします。
- 23. 最初の部分を除くすべての@articlesを返す
- 24. Sedを使って行の最初の部分を削除する
- 25. 豚を使ってURLの最初の部分を抽出する方法
- 26. javascriptを使用してウェブページ上部のスクロールを検出する
- 27. 最初の部分を内容の後に読み込みます。
- 28. .text()を使用して最初の単語のみを使用します。
- 29. Selenium C#を使用して最初の単語のみが一致するドロップダウンアイテムを選択する
- 30. バックグラウンドの明るさが不明な場合の背景差分