質問: elem_rink.replace('msg/', '') print('https://tenshoku.mynavi.jp/' + elem_rp) else: print('https://tenshoku.mynavi.jp/' + elem_rink) ``` ### 試したこと ・elseを外した。 ### 補足情報(FW/ツールのバージョンなど) ifの条件がtrueの時はifの中身が実行されてelseの中身が実行されず、繰り返し処理をすると思っているのですが、間違っているのでしょうか?
回答: そもそも何が起こっているか ブラウザでこのサイトの画面を開いたら どこか適当なところで右クリックをして検証をクリックし、開発者ツールを開いてください。 上の方にElements, Console, Sources...とありますが、 このうちConsoleを選んでください。 そしてそこにjsを打ち込み、エンターキーを押下します。 ``` document.getElementsByClassName('linkArrowS')[i] ``` iには数字を代入してください0, 1, 2, 3, 4...といった具合です。 すると「企業からのメッセージを見る」と「詳細を見る」が交互に現れていると思います。 そしてこの2つ、href属性が全く同じであることを確認してください。 あなたはclass属性がlinkArrowSの要素を全て取り出していたので、 この両方のタグを上から順番に処理していったため、 printした際に同じものが2つ現れてしまったというわけです。 どうすれば「詳細を見る」だけ取得できるか ==================== これはDOM毎に大きく変わってきますが、 今回の場合はaタグで表示されるテキストで取得するのが最適だと思います。 ``` for elem in elems: if elem.string == '詳細を見る': elem_rink = elem.get('href') if 'msg/' in elem_rink: elem_rp = elem_rink.replace('msg/', '') print('https://tenshoku.mynavi.jp/' + elem_rp) else: print('https://tenshoku.mynavi.jp/' + elem_rink) ```