ようやく書き始めてみたのですが、なかなかに大変ですね。
慣れていない、メソッドや関数の使い方がわからないってのが一番ですが。
print文が関数なのが慣れなくてつらい。
Perlの文化に染まりきってるので、カッコしてprint文を書くことがほとんど無いんですよね。C言語だとprintfだからカッコやフォーマット指定入れてましたけども。
requestでHTML取得して、BeautifulSoupに流してHTML解析から抽出ということやっていますが、狙った要素をうまく取るのが難しいです。
全体から一気に取るとゴミが多いから、特定のスコープ内にあるものを先に取り出して、そこから更に必要な要素を抽出するという手順を取って居ます。
findで特定のdivをid指定して拾ってきて、その中からfind_allで必要なタグを抽出して、attrsメソッドで参照したデータのうちゴミを排除したものをリストに放り込めば完了。
get_html = request.get('URL')
bs = BeautifulSoup(get_html.text,'html.parser')
div_get = bs.find('div',class_='ID')
get_list = div_get.find_all('tag')
find_list =[]
for s_list in get_list:
if s_list.attrs['attrs'].find('check_str') != -1:
find_list.append(s_list.attrs['attrs'])
これだけやるのに1時間半ほどかかるという…。要素については代名詞なので、実際に組んでるものとは違います。
findやfind_allでタグやIDの指定の仕方を理解するのに手間取ったのと、最初にサンプルにしたアドレスじゃ駄目だと思って、別のアドレスチェックして、結局元のアドレスをチェックするようにしたのに、HTMLは別のアドレスのものを見ているとかいうポカをやらかしてたからでもあるんですが。
実際に書いてみたら、ほんの十数行で出来てしまって、Perlで正規表現使って抽出してたのは何だったのだろうかと思う程度に楽ですね。
最初のURLを親ページをリスト化したテキストファイルに切り替えて、狙ったページから必要な要素を抽出、その抽出したリストをテキストに書き出すというのが最終目標です。
どれぐらいで完成出来るかなぁ。
今回の参照ページ。