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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

Q&A

解決済

3回答

524閲覧

Beautiful Soupを使って特定の要素を抜き出したい

onakafunifuni

総合スコア7

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

0グッド

0クリップ

投稿2019/10/04 06:25

前提・実現したいこと

外務省のホームページから、当該国の「経済概況」に関する記述のテキストデータを抜き出したいと考えています。
現在参照しているのは韓国のページ(2011)です。

試したこと

Requestを使いhtmlを取得したのち、基礎データの部分のみ抜き出すことができました。

Python

1res = requests.get("http://warp.ndl.go.jp/info:ndljp/pid/1712311/www.mofa.go.jp/mofaj/area/korea/data.html") 2exa = BeautifulSoup(res.text, "lxml") 3exadata = exa.find("div", id="data") 4print(exadata)

html

1<div id="data"> 2<h3>一般事情</h3> 3<h4>1.面積</h4> 4<p>約10万33平方キロメートル(朝鮮半島全体の45%、日本の約4分の1)</p> 5<h4>2.人口</h4> 6<p>約4,887万人(2010年現在)</p> 7<h4>3.首都</h4> 8<p>ソウル</p> 9<h4>4.民族</h4> 10<p>韓民族</p> 11<h4>5.言語</h4> 12<p>韓国語</p> 13<h4>6.宗教</h4> 14<p>仏教:25%、プロテスタント:20%、カトリック:7.4%、その他<br/> 15社会・文化に儒教の影響を色濃く受ける。</p> 16<h4>7.略史</h4> 17<p>3世紀終わり頃に氏族国家成立<br/> 18三国時代(高句麗、百済、新羅)(4世紀頃〜668年)<br/> 19統一新羅(676年〜935年)<br/> 20高麗(918年〜1392年)<br/> 21朝鮮(1392年〜1910年)<br/> 22日本による統治(1910年〜1945年)を経て、第2次大戦後、北緯38度以南は米軍支配下に置かれる。1948年大韓民国成立。同時に朝鮮半島北部に北朝鮮(朝鮮民主主義人民共和国)が成立。</p> 23<h3>政治体制・内政</h3> 24<h4>1.政体</h4> 25<p>民主共和国</p> 26<h4>2.元首</h4> 27<p><a href="/info:ndljp/pid/1712311/www.mofa.go.jp/mofaj/area/korea/cv/r_lee_mb.html">李明博(イ・ミョンバク)大統領</a></p> 28<h4>3.議会</h4> 29<p>一院制 299議席 議長:<img align="absmiddle" alt="" border="0" height="18" src="/info:ndljp/pid/1712311/www.mofa.go.jp/mofaj/area/korea/image/kimh.gif" width="47"/>(キム・ヒョンオ)</p> 30<h4>4.主要閣僚</h4> 31<p>国務総理:鄭雲燦(チョン・ウンチャン)<br/> 32企画財政部長官:尹増鉉(ユン・ジュンヒョン)<br/> 33外交通商部長官:柳明桓(ユ・ミョンファン)<br/> 34統一部長官:玄仁澤(ヒョン・インテク)<br/> 35国防部長官:金泰栄(キム・テヨン)<br/> 36知識経済部:崔�煥(チェ・ギョンファン)</p> 37<h4>5.内政</h4> 38<p> 2008年4月9日に第18代国会議員総選挙の投開票が行われ、与党ハンナラ党が153議席を獲得し、全体議席(299議席)の過半数を占める国会第1党となった。2009年には、2度の補欠選挙が行われたが、ハンナラ党は安定多数(168議席以上)を維持している。</p> 39<table> 40<caption class="leftalign">議席数</caption> 41<thead> 42<tr> 43<th scope="col" width="70%">政党名</th> 44<th scope="col" width="30%">議席数</th> 45</tr> 46</thead> 47<tbody> 48<tr> 49<td>ハンナラ党(与党)</td> 50<td class="centeralign">169</td> 51</tr> 52<tr> 53<td>民主党</td> 54<td class="centeralign">86</td> 55</tr> 56<tr> 57<td>自由先進党</td> 58<td class="centeralign">17</td> 59</tr> 60<tr> 61<td>未来希望連帯</td> 62<td class="centeralign">5</td> 63</tr> 64<tr> 65<td>民主労働党</td> 66<td class="centeralign">5</td> 67</tr> 68<tr> 69<td>創造韓国党</td> 70<td class="centeralign">2</td> 71</tr> 72<tr> 73<td>その他・空席</td> 74<td class="centeralign">15</td> 75</tr> 76<tr> 77<td class="rightalign"></td> 78<td class="centeralign">299議席</td> 79</tr> 80</tbody> 81</table> 82<h3>外交・国防</h3> 83<h4>1.外交</h4> 84<p>(1)李明博大統領は、「グローバル・コリア」のスローガンを掲げ、2008年2月の就任演説において、より広い視野、より能動的な姿勢で国際社会と共に歩み、交流するグローバル外交を展開するとの抱負を述べた。</p> 85<p>(2)李明博大統領は、米国との伝統的友好関係を未来志向的同盟関係に発展・強化することを掲げるとともに、アジア諸国との連携、特に、日本、中国、ロシア等との協力関係を強化し、東アジアの平和と繁栄を模索すると主張している。2008年にはこれら4か国(韓国内ではこの4か国を「4強」と呼んでいる)すべてを訪れ、首脳会談を行った。</p> 86<p> 87(3)2009年3月に東南アジア歴訪の際に「新アジア外交」構想を打ち出し、同年6月には済州島で韓ASEAN首脳会議を開催するなどアジア重視の外交を展開。2010年の新年演説では、すべての国と全方位外交を行い、新アジア外交をより確かなものにし、今年は特にアフリカ外交を強化するとしている。</p> 88<p>(4)李明博大統領は、資源とエネルギーの安定的確保に努力し、平和と環境のための国際協力や国際社会への貢献についてもODAの増額やPKO参加拡大など、積極的に取り組むことを掲げている。</p> 89<h4>2.軍事力(2010年ミリタリーバランス及び国防部報道資料)</h4> 90<p>(1)韓国軍 </p> 91<div class="indent01"> 92<p>(イ)予算 28兆5,330億ウォン(259億ドル)</p> 93<p>(ロ)兵役 義務兵役制(24〜27ヶ月)</p> 94<p>(ハ)兵力 陸軍56万、海軍6.8万、空軍6.4万</p> 95</div> 96<p>(2)在韓米軍</p> 97<p> 米国は、1992年以降、約3万7000人の兵力を朝鮮半島に維持してきたが、2004年の米韓間の合意により、在韓米軍兵力1万2500人を、2008年までに3段階に分けて削減する予定であったが、2008年4月の米韓首脳会談において、2万8,500人である現在の水準に維持することで合意。</p> 98<p> また、漢江以北に駐留する第2歩兵師団等の在韓米軍を東豆川(トンドゥチョン)と議政府(ウィジョンブ)に集約した後、それらを烏山(ウサン)・平沢(ピョンテク)地域と、釜山・大邱(テグ)地域に移転する予定。</p> 99<h3>南北関係</h3> 100<p class="h4">(1)2000年6月、史上初の南北首脳会談が開催され南北共同宣言が採択されて以降、南北間の対話と交流は活発化していった。2003年2月に発足した盧武鉉大統領も、南北間の経済協力を通じて朝鮮半島の繁栄を図ろうとする「平和繁栄政策」を掲げ、積極的に南北関係を発展させる政策を実施し、2007年10月には二度目の南北首脳会談が開催され、南北間で経済協力の更なる拡大等に合意した。</p> 101<p class="h4">(2)2008年2月に就任した李明博大統領は、北朝鮮に対し核の放棄を強く求め国際社会との協調を重視する「相互共栄政策」を掲げたが、北朝鮮は韓国の姿勢に反発し、同年12月には南北間の陸路交通を遮断する措置を講じるなど、強硬な姿勢を打ち出した。</p> 102<p class="h4"> 103(3)2009年8月、開城工団等の開発事業等を手がける現代グループの玄貞恩(ヒョン・ジョンウン)会長が訪朝し、金正日国防委員長と会談した。また、金大中元大統領逝去の際には、北朝鮮から弔問団が訪韓し、李明博大統領と会談した。その後、韓国は対北朝鮮人道支援(トウモロコシ1万トン等)を行う旨発表し、南北間では各種協議も開催されたが、他方で、同年11月には黄海で南北間の銃撃戦が行われるなど緊張も続いている。</p> 104<h3>経済</h3> 105<h4>1.主要産業</h4> 106<p>電気・電子機器、機械類、自動車、造船、鉄鋼、石油化学</p> 107<h4>2.名目GDP</h4> 108<p>9,291億ドル(2008年)</p> 109<h4>3.一人当たりGNI</h4> 110<p>17,175ドル(2009年)</p> 111<h4>4.経済成長率</h4> 112<p>0.2%(2009年)</p> 113<h4>5.失業率</h4> 114<p>3.6%(2009年)(ただし、15歳〜29歳のいわゆる青年層の失業率は8.1%)</p> 115<h4>6.総貿易額</h4> 116<p>輸出:3,635億ドル(2009年)<br/> 117輸入:3,231億ドル(2009年)</p> 118<h4>7.主要貿易品目</h4> 119<p>輸出:機械類、電気電子製品、化学工業製品、鉱産物、鉄鋼金属製品<br/>輸入:鉱産物、電気電子製品、鉄鋼金属製品、機械類、化学工業製品</p> 120<h4>8.主要貿易相手</h4> 121<p>輸出:中国、米国、日本、香港、シンガポール<br/> 122輸入:中国、日本、米国、サウジアラビア、オーストラリア</p> 123<h4>9.通貨</h4> 124<p>ウォン</p> 125<h4>10.為替レート(2010年3月末)</h4> 126<p>1ドル=1,130.8ウォン<br/> 127 100円=1,217.68ウォン</p> 128<h4>11.経済概況</h4> 129<p>(1)2009年の韓国経済は、2008年秋以降の世界金融危機の影響を受け、各種経済指標が悪化したが、景気刺激策等の効果等により、景気は回復しつつある。</p> 130<p>(2)外需に大きく依存する経済構造。2009年の最大の貿易相手国は中国で、第2位は日本、第3位は米国。2009年経常収支は426.7億ドルの黒字(過去最高)であり、また、対日貿易は慢性的に赤字(2009年は約276億ドル)。</p> 131<h3>二国間関係</h3> 132<h4>1.政治関係</h4> 133<p>(1)日韓両国は、自由と民主主義、市場経済、基本的人権等の基本的価値を共有する重要な隣国である。</p> 134<p>(2)近年、両国の関係は、一層の深みと広がりを見せており、将来に向けて一層強固な友好協力関係を発展させることが、日韓両国のみならず、北東アジア地域の平和と繁栄にとって極めて重要である。</p> 135<p>(3)2009年10月9日、鳩山総理が韓国を訪問し、日韓首脳会談が行われた。この会談で両首脳は、日韓関係は最も重要な隣国関係であり、今後、両首脳間で「シャトル首脳外交」を実施し、また、首脳・閣僚間の会談を頻繁に行い、日韓関係を更に強化していくこと、また、未来志向の関係を構築していくために様々な分野で緊密に協力していくことで一致した。 136</p> 137<h4>2.経済関係</h4> 138<p>(1)日韓経済関係の強化の流れは継続。韓国側統計では、貿易総額で日本は中国に次ぐ第2位の貿易相手国。日本側統計では、2008年世界金融危機の影響等による円高・ウォン安等の影響で二国間の貿易総額は対前年比30.0%減の約6.46兆円。 139</p> 140<p> 141(2)日韓の産業構造は似通っており(電子・電気機器、自動車、鉄鋼、船舶等)、産業内貿易が多くを占める。 142</p> 143<p> 144(3)韓国は半導体、平面ディスプレイ等の主力輸出品を生産するための中間財(部品、素材)と資本財(製造設備)を日本に依存しており、慢性的な対日赤字で、2009年は2.36兆円(財務省貿易統計:韓国側統計によると約277億ドル)。背景には、韓国の好調な対世界輸出による日本からの中間財の輸入増加、対日輸出の伸び悩み、日本からの消費財の輸入増加等がある。 145</p> 146<p> 147(4)日韓EPA締結交渉は、2004年11月の第6回会合以降中断。2008年4月の首脳会談での合意を受け、6月25日及び12月4日に交渉再開に向けた検討及び環境醸成のための実務協議を開催。2009年2月の外相会談で首席代表レベルを審議官級に上げることで一致し、7月及び12月に審議官級の実務協議を開催した。 148</p> 149<h4>3.交流</h4> 150<p>(1)日韓間では、経済、文化、芸術・スポーツ等、幅広い分野で交流が進展。</p> 151<p>(2)日韓間の人の往来は、約464万人(2009年)。</p> 152<p>(3)日本の29空港から韓国の3空港に直行定期便が運航。この他、2003年11月より羽田-金浦間でチャーター便の運航を開始(現在1日各8便)。</p> 153<p>(4)姉妹都市提携数は、129組。</p> 154<p>(5)2007年1月の東アジア首脳会議で安倍総理が発表した「21世紀東アジア青少年大交流計画」により、2007年から5年間、韓国から毎年1,000人程度の青少年を招聘中(2009年度末までに、約4,000人の青少年が訪日)。</p> 155<h4>4.在留邦人数</h4> 156<p>28,320名(2009年10月)</p> 157<h4>5.在日当該国人数</h4> 158<p>589,239名(2008年、在日韓国人含む)</p> 159<h4>6.要人往来(首脳)</h4> 160<table> 161<caption class="leftalign"> 162(1)往(2000年以降) 163</caption> 164<thead> 165<tr> 166<th scope="col" width="20%">年月</th> 167<th scope="col" width="80%">要人名</th> 168</tr> 169</thead> 170<tbody> 171<tr> 172<td scope="row">2000年5月</td> 173<td>森総理</td> 174</tr> 175<tr> 176<td scope="row">2001年10月</td> 177<td>小泉総理</td> 178</tr> 179<tr> 180<td scope="row">2002年3月</td> 181<td>小泉総理</td> 182</tr> 183<tr> 184<td scope="row">2002年5月</td> 185<td>小泉総理</td> 186</tr> 187<tr> 188<td scope="row">2003年2月</td> 189<td>小泉総理</td> 190</tr> 191<tr> 192<td scope="row">2004年7月</td> 193<td>小泉総理</td> 194</tr> 195<tr> 196<td scope="row">2005年6月</td> 197<td>小泉総理</td> 198</tr> 199<tr> 200<td scope="row">2006年10月</td> 201<td>安倍総理</td> 202</tr> 203<tr> 204<td scope="row">2008年2月</td> 205<td>福田総理</td> 206</tr> 207<tr> 208<td scope="row">2009年1月</td> 209<td>麻生総理</td> 210</tr> 211<tr> 212<td scope="row">2009年10月</td> 213<td>鳩山総理</td> 214</tr> 215<tr> 216<td scope="row">2010年5月</td> 217<td>鳩山総理</td> 218</tr> 219<tr> 220<td scope="row">2010年11月</td> 221<td>菅総理</td> 222</tr> 223</tbody> 224</table> 225<table> 226<caption class="leftalign"> 227(2)来(2000年以降) 228</caption> 229<thead> 230<tr> 231<th scope="col" width="20%">年月</th> 232<th scope="col" width="80%">要人名</th> 233</tr> 234</thead> 235<tbody> 236<tr> 237<td scope="row">2000年9月</td> 238<td>金大中(キム・デジュン)大統領</td> 239</tr> 240<tr> 241<td scope="row">2002年6月</td> 242<td>金大中(キム・デジュン)大統領</td> 243</tr> 244<tr> 245<td scope="row">2003年6月</td> 246<td>盧武鉉(ノ・ムヒョン)大統領</td> 247</tr> 248<tr> 249<td scope="row">2004年12月</td> 250<td>盧武鉉(ノ・ムヒョン)大統領</td> 251</tr> 252<tr> 253<td scope="row">2008年4月</td> 254<td>李明博(イ・ミョンバク)大統領</td> 255</tr> 256<tr> 257<td scope="row">2008年7月</td> 258<td>李明博(イ・ミョンバク)大統領</td> 259</tr> 260<tr> 261<td scope="row">2008年12月</td> 262<td>李明博(イ・ミョンバク)大統領</td> 263</tr> 264<tr> 265<td scope="row">2009年6月</td> 266<td>李明博(イ・ミョンバク)大統領</td> 267</tr> 268<tr> 269<td scope="row">2010年11月</td> 270<td>李明博(イ・ミョンバク)大統領</td> 271</tr> 272</tbody> 273</table> 274<h4>7.主な二国間条約・取極</h4> 275<p> 基本関係条約、漁業協定、請求権・経済協力協定、文化財・文化協定、在日韓国人の法的地位協定(以上1965年締結)、租税条約(1970年)、大陸棚南部共同開発協定(1974年)、大陸棚北部境界画定協定(1974年)、科学技術協力協定(1985年)、原子力平和的利用協力取極、海難救助協定(1990年)、環境保護協力協定(1993年)、新漁業協定(1999年)、犯罪人引渡条約(2002年)、投資協定(2003年)、税関相互支援協定(2004年)、社会保障協定(2005年)、刑事共助条約(2006年)</p> 276</div>

しかし、経済状況に冠する文言

「(1)2009年の韓国経済は、2008年秋以降の世界金融危機の影響を受け、各種経済指標が悪化したが、景気刺激策等の効果等により、景気は回復しつつある。

(2)外需に大きく依存する経済構造。2009年の最大の貿易相手国は中国で、第2位は日本、第3位は米国。2009年経常収支は426.7億ドルの黒字(過去最高)であり、また、対日貿易は慢性的に赤字(2009年は約276億ドル)。」

だけをきれいに抜き出す方法がわからず、質問させていただくに至りました。
タグを除去しテキストのみにする方法はわかるのですが、肝心の抜き出したい部分を指定する方法がわかりませんでした…

Python初心者で、大変初歩的な質問となってしまい申し訳ありませんが、ご教授のほど宜しくおねがいします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

他のところにも使うのでしたらこちらの方がいいかも

h4の下にpを検索、タグがp以外になると終了

python

1flg = True 2 3def p_find(tag): 4 5 if tag.name == "p": 6 p = True 7 else: 8 p = False 9 global flg 10 flg = False 11 12 return (p and flg) 13 14h4 = soup.find("h4", text="11.経済概況") 15 16for i in h4.find_next_siblings(p_find): 17 print(i.get_text(strip = True))

投稿2019/10/06 12:12

barobaro

総合スコア1286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onakafunifuni

2019/10/08 02:19

ありがとうございます!他に応用することができ、大変助かりました!お手数おかけしました。
guest

0

ベストアンサー

これだったらマウスでコピペした方が早いような

  1. h4タグのテキストが「11.経済概況」を検索
  2. そこから下にpタグ2つを取得

python

1import requests 2from bs4 import BeautifulSoup 3 4url = "http://warp.ndl.go.jp/info:ndljp/pid/1712311/www.mofa.go.jp/mofaj/area/korea/data.html" 5 6r = requests.get(url) 7 8soup = BeautifulSoup(r.content, 'html.parser') 9 10h4 = soup.find("h4", text="11.経済概況") 11 12for i in h4.find_next_siblings("p", limit = 2): 13 print(i.get_text(strip = True))

投稿2019/10/04 12:07

barobaro

総合スコア1286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onakafunifuni

2019/10/05 13:30

できました!ありがとうございます。特定の行の2個下までを取得する、ということがまさにやりたかったことでしたので、大変助かりました。いくつかのページをスクレイプする必要があったので、こちらで質問させていただきました(確かに単体ですとコピペが一番速いですね(^o^;))。ご回答ありがとうございました。ベストアンサーとさせていただきます。
guest

0

見たところ識別可能なタグがないようなので、地道に子要素を辿って取得するとかでしょうか。

投稿2019/10/04 10:07

meg_

総合スコア10577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問