Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

無限スクロールのwebページを全部読みたい

WebClient タグの編集...

投稿者 せんと   (社会人)   投稿日時 2019/5/24 02:34:35
無限スクロールのwebページを全部読みたいのですが、
下のものでは、途中までのようです、どうすれば全部読み込めるでしょうか?

       Dim wc As WebClient = New WebClient()
        Dim st As Stream = wc.OpenRead("https://xxx/")
        Dim enc As Encoding = Encoding.GetEncoding("utf-8")
        Dim sr As StreamReader = New StreamReader(st, enc)
        Dim html As String = sr.ReadToEnd()
        sr.Close()
        st.Close()
        TextBox1.Text = html

投稿者 shu   (社会人)   投稿日時 2019/5/24 08:54:06
多分、JavaScriptなどでその機能を実現していると思いますので、
提示された方法では最初の読み込みで終了します。
その後の分を読み込むにはスクロール時に実行される動作を
自分で実行する必要があると思います。

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2019/5/24 10:27:29
本当の「無限」だと「全部」は無理ですが、それはさておき。

実装方法は WebSocket だったり Ajax だったり様々ですが、単に HTML ソースを読み取るのではなく、スクリプトで動的に生成された DOM を読み取れるライブラリを使わないと無理かと思います。

技術的には AngleSharp とか Selenium / WebDriver で取得できるかも知れませんが、そもそも無限スクロールは人間が利用することを想定したものであるため、スクレイピングを行うことはサイト提供者にとって好ましくない可能性が高いです。データを取得するための Web API が提供されていないか、サイト管理者に相談された方がよろしいかと思います。