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

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/03/24 00:09
2023/03/24 01:13
2023/03/25 06:21