0

このサイトから文字列をダウンロードするのを手伝ってくれる人はいますか?私はこのコードを使用していますが、

    Dim client As New Net.WebClient
    Dim str As String = client.DownloadString("

http://www.tsetmc.com/tsev2/chart/data/IndexFinancial.aspx?i=32097828799138957&t=ph ")

結果は異なります。

真のデータは数字です

"20081206,9249,9168,9249,9178,8539624,9178;20081207,9178,9130,9178,9130,11752353,9130"

しかし、結果は " ‹ ŠÜT ÿdë’í,«…ohýˆg­}ÿ÷µyÆdöûuuQà”ÄxD¬Ï³K}æ¿Sûù"のようです

4

2 に答える 2

0

リンクのヘッダーを「取得」する場合:

 Status:200
 Raw:
 HTTP/1.1 200 OK
 Cache-Control: public, max-age=9999
 Content-Length: 33183
 Content-Type: text/csv; charset=utf-8
 Content-Encoding: gzip
 Expires: Sat, 23 Jul 2016 02:32:58 GMT
 Last-Modified: Fri, 22 Jul 2016 23:46:19 GMT
 Vary: *
 Set-Cookie: ASP.NET_SessionId=vsxyok45zvtgsbvp4iqxdh45; path=/; HttpOnly
 X-Powered-By: ASP.NET
 Date: Fri, 22 Jul 2016 23:46:19 GMT

 Request:
 GET /tsev2/chart/data/IndexFinancial.aspx?i=32097828799138957&t=ph HTTP/1.1

データが gzip 圧縮されていることがわかります (「Content-Encoding:」行を参照)。これに対処するには、次のコードを使用します。

    Dim myUrl As String = "http://www.tsetmc.com/tsev2/chart/data/IndexFinancial.aspx?i=32097828799138957&t=ph"
    Dim result as string
    Using client As New WebClient
        client.Headers(HttpRequestHeader.AcceptEncoding) = "gzip"
        Using rs As New GZipStream(client.OpenRead(myUrl), CompressionMode.Decompress)
            result = New StreamReader(rs).ReadToEnd()
        End Using
    End Using

結果は、正しい数値セットとして示したように、圧縮されていないテキストです。

20081206,9249,9168,9249,9178,8539624,9178;20081207,9178,9130,9178,9130,11752353,9130;

gzipを解凍するための情報を見つけた場所は次のとおりです(詳細はこちら):

WebClient.DownloadData を介して gzip 応答を自動的に解凍します

注: プロジェクトに「System.IO.Compression」の参照を追加する必要がある場合があります。

于 2016-07-23T00:07:54.073 に答える