読者です 読者をやめる 読者になる 読者になる

happyou.infoのブログ

ニュース収集サイトhappyou.infoのブログです。 国内外のあらゆる企業と組織、団体のウェブサイトの更新を収集します。 岡本将吾が運営しています。twitterは @happyou_info_ja です。

やはり普及してはならないアンチスクレイピングサービス

この記事は、クローラー/Webスクレイピング Advent Calendar 2016 に参加させていただいています。昨日はL_e_k_oさんによるSelenium IDEで作ったテストをCLIで動かす方法でした。

 

さて、去年のspaceprobeさんのこの記事を読んで考えました。

qiita.com

地図帳や百科事典には、他社にコピーされたことを判別できるように、実用上は問題のない偽データ(たどり着くことの出来ない道路や存在しない言葉など)が埋め込まれているというのは有名な話です。
 

少し角度は違いますが、Tim Berners-Lee先生も「オープンデータも悪い人に加工されて不正確になったらマズいよね」とおっしゃっています。

https://www.theguardian.com/technology/2016/nov/01/tim-berners-lee-warns-danger-of-chaos-unprotected-public-open-data?CMP=share_btn_tw

 

以下に単純化したHTMLページを書きます。
 
sample.html

<div class="cls1">製品1、価格1、電話番号1</div>

<div class="cls2">製品2、価格2、電話番号2</div>

<div class="cls3">製品3、価格3、電話番号3</div>

 

sample.css

.cls3 {

     display:none;
}

cls3のページにアクセスした人は人間じゃないbot(*1). この製品3にアクセスした人には、次のページからところどころ価格を2割あげたデータを提示したり、電話番号を1ずらして表示すればいいんですね? それにそもそも製品3なんて世の中に実在しないんだけど、あなたそのデータどこから持ってきました?

(*1)今回はかなり話を単純化しています。実際にこれをやったら危険。
 
スクレイピングの需要が高まっているようです。気がつくと関連の書籍も色々出版されています。データの収集がカジュアル化するにつれ、「ウチのデータは顧客と潜在的顧客に提供しているのであって、同業他社さんにごっそりコピーされたくない」という需要が高まってくるはずです。
 
自社のウェブサイトをヒューマンリーダブルだけどマシンリーダブルにはしない。一般のユーザさんには影響がない程度の毒を自社サイトに混ぜることでコピーされるのを防ぐ、機械お断りというオープンデータとは真逆の流れが生まれてくるはずです。

この流れは強くなってほしくないですねー。メジャーなCMS向けにアンチスクレイピングプラグインとか、そういうのはリリースされないで欲しいです。予想外れてほしいです!
 
私は、私が2年前に書いたHTMLの構造を常に変化させる方法のほうがまだ良心的のように思えてきました。
このサービスは、私がアンチスクレイピングと認識しているものをhtml obfuscationと呼んでいるようです。価格表示だけ別サーバは大胆。色々あわせ技凄い。なるほど。
 

中華人民共和国大使館のスクレイピング

この記事は、クローラー/Webスクレイピング Advent Calendar 2016 に参加させていただいています。 昨日の記事は、anoChick さんによる AWS上にサーバレスな汎用クローラを展開するぞ。 - あのにのに  でした。

--

happyou.infoでは、中国政府のサイトをスクレイピングしています。

今回はその中でも中国政府の大使館や領事館のウェブサイトの更新情報を検出しRSS化しましたので公開したいと思います。

 

Q: なぜ中国大使館のスクレイピングを行うのか?

1.意味があるため

中国政府が対外的に発信する情報を網羅的に収集することには社会的に意味があると考えらるため。

 

2.ウェブサイトがマシンリーダブルでないため

中国政府のウェブサイトはマシンリーダブルでないため。RSSはなく、TwitterFacebookの利用も体系的には行われていないため。

 

3.happyou.infoが得意な分野であるため

たとえば、日本の東京にある中国大使館のサイトは、アメリカのワシントンにある中国大使館のサイトとはデザインが異なります。イタリアの大使館サイトはまた別のデザインです。

中華人民共和国駐日本国大使館

Embassy of the People's Republic of China in the United States of America

中华人民共和国驻意大利共和国大使馆

このようなサイトが 言語別にわけると約500近くあります。 これらのサイトを手作業でスクレイピングするのは大変ですが、happyou.infoは全て自動で収集することが出来るためです。*1

---

 これが入力元のサイト一覧です。

Missions Overseas

そして、これが現時点でのスクレイピングの結果です。

All Chinese embassies and consulates

  • 諸事情により中国語、英語、日本語以外の言語については生成していません。
  • 更新の半分くらいは 中国の外交部(日本の外務省に相当する)のプレスリリースがそのまま書き写されています。中国本国のリリースを中国語と現地の公用語で発信しているコピペです。
  • 残りは2国間関係のニュース、大使の講演や発言、中国関連のイベントの告知など。
  • 継続して収集しているのでわかるのですが、2016年の7月あたりを最後に、南シナ海に関する情報発信を発信を止めちゃったようです。
  • 在北朝鮮大使館の英語版のサイトの更新が止まっていて物悲しい。私は読めないけれど韓国語版も止まってる。仕事しろ同盟国じゃろ…

一つ一つのニュースはあまり面白くなく、とても意味があるとは思えません。しかしこれらを蓄積して分類しアーカイブ化すると価値が生まれることを知っています。

 

中国政府のスクレイピングで、クローラの多言語化にかなり対応できたのではないかと考えています。今回の成果をもとに去年失敗したNASDAQ全銘柄スクレイピングにもう一度挑戦してみるつもりです。

以上です。

*1:少なくとも民間レベルでは他に存在しないと考えています。

Wikitable

Wikitables - Convert Wikipedia tables to CSV file

URLを入力すると、Wikipediaのページにあるテーブルの内容をCSVファイルに変換する。

Wikipediaですらこの状態。世に多数存在する雑なウェブページからテーブルを抽出したところで、そのデータが何なのか判断できない。なんとかしてテーブルに適切なタイトルをつけることが出来ないだろうか?

道は遠い。

FinalScraperを高速化しました

FinalScraperをアップデートしました。

 

以前よりも高速にRSSフィードが生成されるようになりました。

その他の変更点はありません。

久しぶりに自分で使ってみたら、いつまでたってもフィードが生成されず、あまりの遅さにびっくりしたためです。

 

FinalScraper関連で残されている修正点は、

  • 時々、解析することのできないページがあるよう。原因不明。
  • 既にRSSフィードを提供しているサイトの場合、そのURLも表示する。

の2点です。

 

 

クローラの不具合が直る

本当に長い間調査をし続けて、ようやくhappyouのクローラの不具合が治ったことを記念し、久しぶりにブログを書く。

 

今後、happyouをスケールアウトさせることを考えたとき、今のボトルネックは明らかにDB.細かな最適化をおこなったところで多寡が知れている。

 

(1)次はDBの垂直分割を行いたい。教科書的には、更新系と参照系にわけるのだろうがそれは参照の比率の高いWebシステムの場合。happyouのクローラは約1:1なわけだからあまり効果はないと思う。

 

(2) または適当なKVS。で、Valueがサイト丸ごと(おぉ)。その評価を行わなければならない。パフォーマンスは高くなくてもよいので、できるだけ少ないメモリで動かしたい。

 

目的は何で、妥協できる点はどこなのか?そこを明確にしなければならない。

 

自らを制約するものは何もない。 どんどんやらかそう。