5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【🔥UiPath vs Automation Anywhere🔥】ちょっずだけ芏則正しくない繰り返しパタヌンのデヌタスクレむピングを詊しおみた

Posted at

デヌタスクレむピングずは

「Webサむトから情報を抜出するコンピュヌタ゜フトりェア技術」のこずです。ペヌゞの特定の領域からひず぀のフィヌルドの情報だけ取り出す堎合もあれば、衚や繰り返しパタヌンになっおいるペヌゞから、パタヌンになっおいるフィヌルドの情報をたずめお取り出す堎合もあるんですよね。パタヌン情報の抜出はずおも䟿利で、さたざたな情報集玄サむトから情報の䞀芧を取っおくるのに圹立ったりしたす。

Webペヌゞは、ブラりザヌにペヌゞが読み蟌たれおから動的にタグが生成されるものもあるため、HTML゜ヌスをダりンロヌドしお解析するだけだずダメな堎合がありたす。プログラミングをする堎合は、ブラりザヌのDOMを䜿っおXPathの解析を行っおいく手法が必芁です。

ただし、困るのはWebサむトによっおは䞀芧の衚瀺がちょっずだけ芏則正しくないパタヌンになっおいる堎合があるんです。そのような堎合、完党にカスタムプログラミングをしお想定されるパタヌンを実装すれば抜き出せるのですが、プログラミングが面倒くさかったりそこたで䜜れない堎合は、RPA゜フトりェアでお手軜にできるず理想的です。

䜿甚するRPA゜フトりェアは、UiPathずAutomation Anywhereの2぀です。これらはいずれもCommunity Editionが無料で取埗でき、か぀RPA゜フトりェアの䞭では技術的に優秀な郚類に入りたす。この2぀にどこたでできるかやらせおみたしょう

利甚した環境

※ Webサむトの䜜りも含め、いずれも2019幎10月珟圚の情報です

RPA゜フトりェアにおけるデヌタスクレむピング手順

繰り返しパタヌンの1項目目、2項目目で同じ芁玠を指定するこずで、RPAツヌルが繰り返しパタヌンを認識する仕組みになっおいたす。

UiPath Community Edition

Internet Explorerで察象ずなるWebペヌゞを開いおおきたす。そしおUiPath Studioでたず新しいプロセスを䜜りたす。
image.png

ツヌルバヌの「デヌタスクレむピング」を抌したす。
image.png

新しいレコヌディングシヌケンスを䜜成したす。
image.png

取埗りィザヌドを進めたす。
image.png

マりスで繰り返しパタヌンの最初の項目の䞭の取り出したい芁玠をクリックしお遞択したす。(マりスを動かすず、遞択領域が四角で囲われたす)
image.png

次に第2の芁玠の遞択を同様に行いたす。(※遞択モヌドの時は、なぜかマりスのホむヌルが効かないので、Internet Explorerのペヌゞ内で䞋の方のコントロヌルを遞択するには、カヌ゜ルキヌの䞊䞋で画面スクロヌルをするこずになりたす)
image.png

正しく遞択されるず、Internet Explorer䞊で同じ芁玠のパタヌンがハむラむトされたす。列に名前を付けお先に進みたす。
image.png

プレビュヌが衚瀺されたす。「盞関するデヌタを抜出」でほかの列も必芁に応じおデヌタを遞択したす。
image.png

必芁な回数だけ「盞関するデヌタを抜出」ず芁玠の遞択を行い、列を远加したす。远加が終わったら「終了」したす。
image.png

最埌に、耇数ペヌゞにたたがるデヌタかどうかを聞いおくるので、必芁に応じお次のペヌゞをめくるためのボタンを遞択したす。
image.png

するず、以䞋のようなシヌケンスが生成されたす。
image.png

「構造化デヌタの抜出」の盎埌に、「CSVに曞き蟌み」アクティビティを最埌に远加したす。曞き出すCSVファむル名ず、「構造化デヌタの抜出」のプロパティを芋お「出力 > デヌタテヌブル」のずころに蚘茉がある倉数名 ("ExtractDataTable")を蚘茉したす。
image.png

以䞊で、終了です。

Automation Anywhere Community Edition

AACEでは、Web Recorderを遞択した状態で「Record」メニュヌで開始したす。
image.png

URLには、察象ずするWebペヌゞのURLを入力したす。
image.png

その埌、この画面が出る堎合は「OK」を抌したす。
image.png

Web Recorderツヌルバヌでは、「Extract Data」をクリックしたす。
image.png

オプションでは「Pattern based data」を遞択。
image.png

指定したペヌゞがInternet Explorerで開くので、繰り返しパタヌンの最初の項目の䞭の取り出したい芁玠をクリックしお遞択したす。(マりスを動かすず、遞択領域が二重線の四角で衚瀺されたす)
image.png

遞択埌、衚瀺される芁玠が正しければ「Capture」したす。
image.png

その埌、2項目目の同じ芁玠をクリックしお遞択するず、列名を入力するダむアログがでるので、列名を適圓に入れお「Save」したす。
image.png

Extract Multiple Data Wizardダむアログボックスの䞭で、他にも必芁な芁玠があれば「Add」で同様に1項目目ず2項目目の芁玠をクリックで遞択しおいきたす。取り出す芁玠はText、URL、画像など遞ぶこずができたす。終わったら「Next」を抌したす。
image.png

耇数ペヌゞにわたるデヌタの堎合は「The data spans across multiple pages」をチェックしお、次のペヌゞに移動するボタンを「Capture」したす。
image.png

最埌のペヌゞで「Preview」を芋぀぀、出力するCSVを指定するず終了し、コマンドが出力されたす。Previewで正しく結果が衚瀺されない堎合は、実行時に正しくCaptureされたせん。
image.png

Web Recorderツヌルバヌで「Stop Recording」を抌しお、TaskBotを保存する名前を指定したら終了です。
image.png
image.png

アクションリストが生成されたした。
image.png

ちょっずだけ芏則正しくないパタヌンを詊しおみた

いく぀かのWebサむトで詊しおみたした。

Qiita トレンド

Webペヌゞの特城

  • 単䞀ペヌゞ (30項目)
  • 時々newアむコンや、フォロワヌのアむコンが出珟

image.png

繰り返しパタヌン郚分のHTMLタグの構造(FireFoxむンスペクタで調査)
<div>
 <div class="tr-Item">
  <a class="tr-Item_userImage">
   <img src="(プロファむル画像)" alt="(ナヌザヌ名)"/>
  </a>
 <div class="tr-Item_body">
  <a class="tr-Item_title" href="(蚘事URL)">(蚘事タむトル)</a>
  <div class="tr-Item_meta">
   <span class="tr-Item_new">new</span> 👈👈 このspanタグは珟れたり珟れなかったりする
   <span>(ナヌザヌ名)</span>
   <time>(投皿日)</time>
   <div class="tr-Item_likeCount tr-Item-liked"> 👈👈 このクラス名は堎合により倉わる
     <span class="fa fa-thumbs-up mr-1of2">...</span>
     (Like数)
   </div>
   <a class="tr-item_followingLikerImage">...</a> 👈👈 このaタグは珟れたり珟れなかったりする。珟れるずきは耇数個の堎合もある
  </div>
 </div>
</div>

取埗するデヌタ

蚘事タむトル (Title)、ナヌザヌ名 (User)、投皿日 (Time)

結果

UiPathの堎合
UiPathの堎合、正解ず同じデヌタがきちんず取埗できたした。ちょっずくらいの䞍芏則なパタヌンは無芖しおくれるようです。
image.png

Automation Anywhereの堎合
AAの堎合、「new」アむコンが衚瀺されおいる項目のずころでナヌザヌ名が取埗できたせんでした。なぜか、デヌタが取埗できなかった行が空欄になるのではなく、衚党䜓で䞊に詰められるずいう䞍思議な動きになりたした。䞀床党郚メモリに読み蟌んでから成圢したうえで出力しおいるのでしょうか
image.png

【この勝負ではUiPathに軍配が䞊がりたした。】

マむナビAgent (SE・システム゚ンゞニア(IT通信むンタヌネット) 求人䞀芧)

Webペヌゞの特城

  • 耇数ペヌゞ (30項目/ペヌゞ、党䜓で玄6,000件)
  • 項目のラベルが耇数個出珟
  • 各ペヌゞで10-11項目、20-21項目の項目間に広告が入る

image.png

繰り返しパタヌン郚分のHTMLタグの構造(FireFoxむンスペクタで調査)
<ul class="searchResultList">
 <li class="sdw">
  ::maker
  <a>
   <div class="conditionsBox">
     ::before
     <p class="company">(䌚瀟名)</p>
     <p class="job">(抂芁)</p>
     <ul class="tags pc">
      <li>(タグ1)</li>👈👈 このliタグは珟れたり珟れなかったりする。珟れるずきは耇数個の堎合もある
         
      <li>(タグn)</li>👈👈 このliタグは珟れたり珟れなかったりする。珟れるずきは耇数個の堎合もある
     </ul>
     ::after
   </div>
   <div class="descriptionBox">
    <div class="incomelocation">
     <dl>
      <dt class="income">幎   収</dt>
      <dd>(幎収)</dd>
     </dl>
     <dl>
      <dt class="location">勀務地</dt>
      <dd>(勀務地)</dd>
     </dl>
    </div>
    <dl class="pc">
      <dt class="icnJob">仕事内容</dt>
      <dd>(仕事内容)</dd>
    </dl>
    <div class="icnJob sp">(仕事内容)</div>
    <dl class="pc">
      <dt class="icnQual">応募条件</dt>
      <dd>(応募条件)</dd>
    </dl>
   </div>
  </a>
 </li>
</ul> 

取埗するデヌタ

䌚瀟名 (Company)、幎収 (Salary)、勀務地 (Place)、仕事内容 (Description)、応募条件 (Requirements)

結果

UiPathの堎合
3ペヌゞ目たでは間に入る広告は無芖しお順調に正しいデヌタを取埗しおいたのですが、なぜか4ペヌゞ目の途䞭 (最初の広告の手前)で凊理が終了しおCSV出力になりたした。よく調べおみるず、「構造化デヌタを抜出」(UiPath.Core.Activities.ExtractData)のプロパティに「結果の最倧数」ずいう芁玠があり、既定ではこれは100になっおいたす。この倀を増やすこずで党デヌタを取埗できるようになりたす。
image.png

Automation Anywhereの堎合
特に歯抜けなく、党デヌタを正垞に取り終わりたした。
image.png

【この勝負はドロヌです。】

Google怜玢 (RPAず怜玢)

Webペヌゞの特城

  • 耇数ペヌゞ (10項目/ペヌゞ、1ペヌゞ目は9項目になるこずも)
  • 広告や関連する䌚瀟、ニュヌス、キヌワヌドなどが前埌に入る
  • 項目により芁玠が異なるこずがある

image.png

繰り返しパタヌン郚分のHTMLタグの構造(FireFoxむンスペクタで調査)
<div id="center_col">
 <style>...</style>
 <div id="taw">👈👈 広告枠 👈👈
  <div></div>
  <div style="padding:0 16px">...</div>
  <div id="tvcap">
   <div id="tads" class="C4eCVc c" aria-label="広告" role="region" data-ved="XXXX">...</div>
  </div>
  <script>...</script>
 </div>
 <div id="res" class="med" role="main">
  <div id="topstuff"></div>
  <div id="search">
   <div data-ved="XXXX">
     <h1 class="bNg8Rb">怜玢結果</h1>
     <div id="rso" eid="XXXX" data-async-context="query:RPA">
      <div class="bkWMgd">
       <h2 class="bNg8Rb">りェブ怜玢結果</h2>
       <div class="srg">

        <div class="g">👈👈 1項目目 👈👈
         <div data-hveid="CAMQAA" data-ved="XXXX">
          <div class="rc">
           <div class="r">
            <a>
             <h3 class="LC20lb">(蚘事タむトル)</h3>
             <br>
             <div class="TbwUpd">
              <cite class="iUh30 bc">(URL)</cite>
             </div>
            </a>
            <span>...</span>
           </div>
           <div class="s">
            <div>
             <span class="st">(説明等のコンテンツ)</span>
           </div>
           <div id="ed_8" data-base-url="/search" data-ved="XXXX">...</div>
          </div>
         </div>
        </div>

        <div class="g">👈👈 2項目目 👈👈
           (2項目目の同様の繰り返し)
        </div>
       </div>
      </div>
     </div>
    </div>
   </div>
  </div>
 </div>
</div>

取埗するデヌタ

ペヌゞタむトル (Title)、ペヌゞURL (URL)、抂芁 (Description)

結果

UiPathの堎合
11ペヌゞ目の途䞭たで、広告やその他の項目は無芖しお順調に正しいデヌタを取埗したした。合蚈100項目、歯抜けなく取埗したした。
image.png

Automation Anywhereの堎合
TaskBotの構築画面で、ペヌゞ内の芁玠を指定するモヌドになった時に、なぜかペヌゞ芁玠を遞択するための二重線の四角が衚瀺されず、芁玠を認識しなかったため、TaskBotが䜜成できたせんでした。

【この勝負ではUiPathに軍配が䞊がりたした。】

Bing怜玢 (RPAず怜玢)

Webペヌゞの特城 (( Google ずパタヌンは異なるがほが同じ、ただしバリ゚ヌションがより豊富))

  • 耇数ペヌゞ (10項目/ペヌゞ、1ペヌゞ目は9項目になるこずも)
  • 広告や関連する䌚瀟、ニュヌス、キヌワヌドなどが前埌に入る
  • 項目により芁玠が異なるこずがある

image.png

取埗するデヌタ

ペヌゞタむトル (Title)、ペヌゞURL (URL)、抂芁 (Description)

結果

UiPathの堎合
シヌケンスの䜜成及び実行は正垞に終了したした。ただし、䞭を芋おみるず、ペヌゞ内で途䞭から飛ばしおしたっおいる項目もあり、完党なデヌタではありたせんでしたが、合蚈100件分がCSVに出力されたした。(黄色から埌のデヌタは2ペヌゞ目に飛んでしたっおいたした。埌ろでも同じようなデヌタの飛びが散芋されたした)
image.png

Automation Anywhereの堎合
タグの指定ずTaskBotの構築は正垞に終わりたした。実行しおみるず、2ペヌゞ目で以䞋の゚ラヌが出お止たっおしたいたした。
image.png

CSVぞの出力結果を芋るず、最初のペヌゞでDescriptionがうたく取れおいないずころがあるようで、最初の6項目だけが取れおいたした。
image.png

【この勝負では䞡者ずも䞍完党でしたが、できばえがより良いほうずいう意味でUiPathに軍配が䞊がりたした。】

結論

詊したペヌゞの䞭ではUiPathの方が動䜜安定性が良いように感じたした。ただ、ペヌゞの構造によっおRPAツヌルにも埗手䞍埗手がありたす。ちょっずだけ芏則正しくない堎合は、正しくデヌタをずれるかは怜蚌しおみお詊すしかなさそうです。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?