質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

Webサイトの記事(本文)のみを取得したい。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,607

score 6

Googleで検索した結果の上位サイトのWebサイトから
人間が「本文欄」「コンテンツ」を書くという意思で書いたコンテンツ(文章、記事)のみを取得したい。

下記のソースの状態だと、HTMLのタグや、なにかしらのスクリプトなども取得されてしまう。
「本文」に該当する文章のみを取得するにはどのようにすればよいでしょうか。
UWSCという開発言語における IEGETDATA のように「ソース」ではなく
「人が見て、記事と思われるもの」のみを取得するのに近い動きにしたい。
UWSCを使って、低スペックのノートパソコン上で実行すると、予定外のエラーが出て作業ができないので
その他の言語で実現をしたい。

手作業でいうと、
(1)目的のサイトをブラウザで表示してブラウザで表示されている内容を全選択してクリップボードにコピー
(2)メモ帳にクリップボードの内容を張り付ける
というのが近いです。
この動作だと、HTMLのタグやアクセス解析等々のスクリプトなどはペーストされないので
ある種のフィルタになって都合がよい。

なんらかのWebサービスかVB.netのスクリプトで実現できないか教えてください。

100サイトのコンテンツを取得する場合、30分以内に処理が完了される程度の処理時間が理想です。

========================================
Module Module1
Sub Main()

Dim V_配列の要素数
V_配列の要素数 = Environment.GetCommandLineArgs.Length

Dim V_URL
Dim V_ログパス
If V_配列の要素数 = 3 Then
V_URL = Environment.GetCommandLineArgs.GetValue(1).ToString()
V_ログパス = Environment.GetCommandLineArgs.GetValue(2).ToString()
Else
V_URL = "https://www.yahoo.co.jp"
V_ログパス = "src.txt"
End If

Dim client As System.Net.WebClient = New System.Net.WebClient()
Dim url As String
url = V_URL

'指定したURLからhtmlのソースを取得する
Dim myStream As System.IO.Stream = client.OpenRead(url)

'エンコードを指定する 
Dim sr As System.IO.StreamReader = New System.IO.StreamReader(myStream, System.Text.Encoding.GetEncoding("UTF-8"))

Dim html_text As String = sr.ReadToEnd()

sr.Close()

myStream.Close()

Debug.WriteLine(html_text)

Dim sFilePath As String = V_ログパス

'文字列をテキストファイルに全て書き込む
Dim sw As New System.IO.StreamWriter(sFilePath, False, System.Text.Encoding.GetEncoding("shift_jis"))
sw.Write(html_text)
sw.Close()

Environment.ExitCode = 2222

End Sub
End Module
========================================

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • y_waiwai

    2018/08/03 08:06

    どこかの課題でしょうか(類似した質問が度々なされてます)コードを提示するには、編集ボタン、<code>ボタンで、'''の枠の中にコピーしてください

    キャンセル

  • KudoTomoyasu

    2018/08/04 15:10

    次回からそのようにします。

    キャンセル

  • KudoTomoyasu

    2018/08/04 15:11

    学校の課題などではなくてプロジェクトチームで実現したい内容です。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る