~/blog/parsing-xml-files-and-extracting-data-using-xidel
Published on

「xidel」でXMLファイルをパースしてデータを取得する

3261文字6分で読めます–––
閲覧数
Authors
  • avatar
    Name
    Shou Arisaka nyapp.buzz/shou
    short bio
    Z世代の情報技術者。Next.jsで自作SNSを個人開発中。

「xidel」はHTML,XML,JSON形式のデータをCSSセレクターやXpathを使用してウェブページ、ウェブサイト上のデータの取得、スクレイピングができるコマンドラインツールです。Linuxパソコン・サーバーのBashプログラミング言語(スクリプティング言語)のコマンドライン上で使用できます。

A command line tool to download and extract data from HTML/XML pages or JSON-APIs, using CSS, XPath 3.0, XQuery 3.0, JSONiq or pattern templates. It can also create new or transformed XML/HTML/JSON documents. http://www.videlibri.de/xidel.html

https://yuis.xsrv.jp/data/uuhhfqnfJXmeQ5Og9ACXoLdHAnPF0q72.png

ダウンロードとインストール

wget https://sourceforge.net/projects/videlibri/files/Xidel/Xidel%200.9.8/xidel_0.9.8-1_amd64.deb
sudo dpkg -i xidel_0.9.8-1_amd64.deb

使用例

以下のようなコマンドで

xidel /mnt/e/_downloads/scrape_anime.xml --xpath '//myanimelist/anime/series_title'

以下のようなXMLから

<?xml version="1.0" encoding="UTF-8" ?>
<myanimelist>
    <myinfo>
        <user_id></user_id>
        <user_name>Fumiya_I</user_name>
        <user_export_type>1</user_export_type>
        <user_total_anime>261</user_total_anime>
        <user_total_watching>8</user_total_watching>
        <user_total_completed>151</user_total_completed>
        <user_total_onhold>33</user_total_onhold>
        <user_total_dropped>24</user_total_dropped>
        <user_total_plantowatch>45</user_total_plantowatch>
    </myinfo>


    <anime>
        <series_animedb_id>477</series_animedb_id>
        <series_title><![CDATA[Aria The Animation]]></series_title>
        <series_type>TV</series_type>
        <series_episodes>13</series_episodes>
        <my_id>0</my_id>
        <my_watched_episodes>6</my_watched_episodes>
        <my_start_date>0000-00-00</my_start_date>
        <my_finish_date>0000-00-00</my_finish_date>
        <my_rated></my_rated>
        <my_score>8</my_score>
        <my_dvd></my_dvd>
        <my_storage></my_storage>
        <my_status>Watching</my_status>
        <my_comments><![CDATA[]]></my_comments>
        <my_times_watched>0</my_times_watched>
        <my_rewatch_value>Low</my_rewatch_value>
        <my_tags><![CDATA[]]></my_tags>
        <my_rewatching>0</my_rewatching>
        <my_rewatching_ep>0</my_rewatching_ep>
        <update_on_import>0</update_on_import>
    </anime>
    <anime>
        <series_animedb_id>37525</series_animedb_id>
        <series_title><![CDATA[Babylon]]></series_title>
        <series_type>TV</series_type>
        <series_episodes>12</series_episodes>
        <my_id>0</my_id>
        <my_watched_episodes>0</my_watched_episodes>
        <my_start_date>0000-00-00</my_start_date>
        <my_finish_date>0000-00-00</my_finish_date>
        <my_rated></my_rated>
        <my_score>9</my_score>
        <my_dvd></my_dvd>
        <my_storage></my_storage>
        <my_status>Watching</my_status>
        <my_comments><![CDATA[]]></my_comments>
        <my_times_watched>0</my_times_watched>
        <my_rewatch_value>Low</my_rewatch_value>
        <my_tags><![CDATA[]]></my_tags>
        <my_rewatching>0</my_rewatching>
        <my_rewatching_ep>0</my_rewatching_ep>
        <update_on_import>0</update_on_import>
    </anime>

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_c9031141-7662-4b46-ada1-540f4f641ed9.png

以下のようなデータが得られます。

Aria The Animation
Babylon
Beastars
Boku no Hero Academia 4th Season
Psycho-Pass 3
Shinchou Yuusha: Kono Yuusha ga Ore Tueee Kuse ni Shinchou Sugiru
Sword Art Online: Alicization - War of Underworld
Vinland Saga
avatar

Shou Arisaka

情報技術者 / Z世代プログラマー / SaaSアプリやSNSを開発
今すぐ話そう!

15歳でWordPressサイトを立ち上げ、ウェブ領域に足を踏み入れる。翌年にはRuby on Railsを用いたマイクロサービス開発に着手し、現在はデジタル庁を支えたNext.jsによるHP作成やSaaS開発のプロジェクトに携わりながら、React.js・Node.js・TypeScriptによるモダンなウェブアプリの個人開発を趣味でも行う。
フロントエンドからバックエンドまで一貫したアジャイルなフルスタック開発を得意とし、ウェブマーケティングや広告デザインも必要に応じて担当、広告運用・SEO対策・データ分析まで行う低コストかつ高品質な顧客体験の提供が好評。
国内外から200万人を超える人々に支えられ、9周年を迎えるITブログ「yuipro」の開発者、デザイナーでありライター。現在ベータ段階の自作SNS「nyapp.buzz」を日本一の国産SNSとするべく奮闘中。

Created with Fabric.js 5.2.4 何かご質問がありますか?