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

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

新規登録して質問してみよう
ただいま回答率
85.60%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

538閲覧

スクレイピングでscriptタグ内しか取得できない

kesko-gt

総合スコア4

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/03/23 15:04

編集2023/03/23 15:05

実現したいこと

https://www.market.jafic.or.jp/today.htm のテーブルデータを取得する

前提

  • 非常に珍しいですが漁業系のデータ収集がしたくてです
  • tableタグ内のデータを取得したいです
  • ゆくゆくスプレッドシートに書き出すなどしたいですがそこまで行けずにつまずきました

発生している問題

どうやってもscriptタグ内のコードしか取得できず...。
肝心のtableタグが抜け落ちてしまいます。
想定では、scriptタグも含めhtml全体が取れると思っていたのですが...。

出力結果は以下の通りです↓

html

1<html xmlns="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:x="urn:schemas-microsoft-com:office:excel"> 2<head> 3<meta name="Excel Workbook Frameset"/> 4<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> 5<meta content="Excel.Sheet" name="ProgId"/> 6<meta content="Microsoft Excel 15" name="Generator"/> 7<link href="today.files/filelist.xml" rel="File-List"/> 8<?if !supportTabStrip?> 9<link href="today.files/sheet001.htm" id="shLink"/> 10<link id="shLink"/> 11<script language="JavaScript"> 12<!-- 13 var c_lTabs=1; 14 15 var c_rgszSh=new Array(c_lTabs); 16 c_rgszSh[0] = "–{“ú‚̐…—g‚°î•ñ"; 17 18 19 20 var c_rgszClr=new Array(8); 21 c_rgszClr[0]="window"; 22 c_rgszClr[1]="buttonface"; 23 c_rgszClr[2]="windowframe"; 24 c_rgszClr[3]="windowtext"; 25 c_rgszClr[4]="threedlightshadow"; 26 c_rgszClr[5]="threedhighlight"; 27 c_rgszClr[6]="threeddarkshadow"; 28 c_rgszClr[7]="threedshadow"; 29 30 var g_iShCur; 31 var g_rglTabX=new Array(c_lTabs); 32 33function fnGetIEVer() 34{ 35 var ua=window.navigator.userAgent 36 var msie=ua.indexOf("MSIE") 37 if (msie>0 && window.navigator.platform=="Win32") 38 return parseInt(ua.substring(msie+5,ua.indexOf(".", msie))); 39 else 40 return 0; 41} 42 43function fnBuildFrameset() 44{ 45 var szHTML="<frameset rows=\"*,18\" border=0 width=0 frameborder=no framespacing=0>"+ 46 "<frame src=\""+document.all.item("shLink")[0].href+"\" name=\"frSheet\" noresize>"+ 47 "<frameset cols=\"54,*\" border=0 width=0 frameborder=no framespacing=0>"+ 48 "<frame src=\"\" name=\"frScroll\" marginwidth=0 marginheight=0 scrolling=no>"+ 49 "<frame src=\"\" name=\"frTabs\" marginwidth=0 marginheight=0 scrolling=no>"+ 50 "</frameset></frameset><plaintext>"; 51 52 with (document) { 53 open("text/html","replace"); 54 write(szHTML); 55 close(); 56 } 57 58(以下略)

該当のソースコード

Colab(Python)で書いています。

Python

1from bs4 import BeautifulSoup 2import requests 3url="https://www.market.jafic.or.jp/today.htm" 4res = requests.get(url) 5soup = BeautifulSoup(res.text, "html.parser") 6print(soup)

試したこと

試しにGAS(JavaScript)でもやってみたのですが、結果は大して変わらずでした。

JavaScript

1function scrapingHtml() { 2 const url = "https://www.market.jafic.or.jp/today.htm"; 3 const response = UrlFetchApp.fetch(url); 4 const html = response.getContentText("SJIS"); 5 const text = Parser.data(html).from('<table>').to('</table>').build(); 6 console.log(text) 7}

今回の対象ページのテーブルデータを抜いてきて、スプレッドシートに書き出すことまで見据えた時の、よい方法・よいコードがあればぜひお伺いしたいです。
よろしくお願いいたします。

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

guest

回答1

0

ベストアンサー

取得対象のテーブルは、実際には以下の URL にあります。

https://www.market.jafic.or.jp/today.files/sheet001.htm

Pandas の read_html() を使うと、table 要素の内容をデータフレームとして取得できます。ただ、ヘッダに相当する部分(市場、水揚日、魚種名、…)が多段組みになっているのと、種類(いわし類、あじ類、…)が独立行になっていますので、それらの部分は加工する必要があるかと思います。

python

1import pandas as pd 2 3url = "https://www.market.jafic.or.jp/today.files/sheet001.htm" 4dfs = pd.read_html(url, skiprows=2) 5if dfs: print(dfs[0])

投稿2023/03/23 15:36

melian

総合スコア18774

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

kesko-gt

2023/03/24 00:09

ありがとうございます!! いただいたコードでテーブルの中身が書き出せました。 >取得対象のテーブルは、実際には以下の URL にあります。 こちらはサイトのどの箇所をご覧になってそう判断された形でしょうか? 純粋に知識として持っておきたく...。
melian

2023/03/24 01:13

https://www.market.jafic.or.jp/today.htm の HTML ソースを確認してみると、ヘッダの部分に、 <link id="shLink" href="today.files/sheet001.htm"> と書かれていて、中身を見ると table タグだったわけです。
kesko-gt

2023/03/25 06:21

着眼点勉強になります。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.60%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

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

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。