2018-01-13

Python SeleniumでJQueryを利用してテキスト検索を行う

PythonでSeleniumを利用して、テキストを検索する際にjQueryを利用しようと思ってやって詰まった時のメモ





やりたかったこと

あるサイトからテーブルをスクレイピングしたかった。
その際、普通はテーブルにIDやClass指定がしてあるので、それをもとにスクレイピングする。しかし今回の場合は、スクレイピングするtr tdにクラス名やIDが指定されていなかったので、それらの値から取得できなかった。


さらに、その場合だと、要素の数を指定してデータを取ることができるのだか、テーブルの中には取得したい複数のページのうち、存在したり存在しなかったりするカラムがあるので、順番でとると一つ抜けると取得したいデータが全部変わってしまう。
Xpathを利用してもやはり同様の理由でDOM構造が変わってしまうので、取得できなかった。






そこで、特定のtr要素のテキストの値が一致したものだけを取得する方法を、今回は試行錯誤して取得した。検索を行うのはCSS Selectorからは難しそうで、Xpathしかできないよう。なので、なんとか無理やりjavascriptを利用して取得することにした。





つまったところ


Javascriptを実行するコードを、string上に入れようとすると、シングルクオートの中のダブルクオートの中に値を入れる必要があるので、それは不可能っぽいことがわかった。なので別の手段を使う必要があると感じた。format記法でなんとかなるやろと思ったけど、結局format記法でやったとしても挿入するのはダブルクオートかシングルクオートなので意味なくて失敗した。





困っていてツイートすると、このようなアドバイスをいただいた。




なので試してみた。最初やったこと。これは当たり前だけど、jsを実行するのにjs内部にトリプルクオート入れて失敗するというあほらしい失態。




その後






のようにやっていたが、空の値が返ってきて失敗。
なんでやろって考えて悩んだ結果解決方法がわかった。








注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...