Python駿河 #4 でひたすら教え合う回を開きました

8月頃に開催されたPython駿河に行ってきました。今回は テーマに困った結果 Python Bootcamp 藤枝でPython初めて触った方向けに困りごとをよってたかって教えようの会でした。

Python駿河 勉強会 #4 〜Python初心者に寄ってたかって教えよう!〜 - connpass

とりあえず始めます宣言から、質問をいくつかありました。教えたい勢が結構いたようで質問された方の周りにみんなで集まってあーでもないこーでもないと話し合う姿はまさに寄ってたかるそのものの会でしたw

色々あったのですが、自分が見に行って覚えている範囲でこんな話がありました。

Windowsのvenvで動かしてるスクリプトがimport周りで失敗する

環境変数のPATHがうまく通らなくて苦労していたらしいと話をしていて、頑張ってsys.pathを書いていたのですが面倒そうでした。 寄ってたかってスクリプトを見ていたところ、シェバンの表記があったので、調べてみると、Winでシェバンを書いたときにvenvが呼び出されないっぽい話があったので、消してみたら見事にvenv上で動きました。

どんなシェバンだったか(このブログを書いてるのが12月なのもあって)忘れてしまったのですが、Winに限らずこの表記をよくおすすめされているので、こちらが良いかも知れないです。

#! /usr/bin/env python3

BeautifulSoup4のfind_allで取り出したものから中身のタグをフィルターできない

BeautifulSoup4のfind_allで取り出した結果で、更に中身のhtmlの構造へアクセスできないとのことでした。find_allのドキュメントを見ると

Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation

find_allで返ってくるオブジェクトはTagオブジェクト(だった?)で、Tagオブジェクトにはfindメソッドはないので、再帰的な検索はできなかったとおもいます。

ただ、Tagオブジェクトは親や隣通しのタグを見る機能があります。 Slackで @b7craft さんが別回答を載せてくれてました。

from bs4 import BeautifulSoup
import lxml
import requests
URL="https://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%BF%E3%83%8E%E3%83%BC%E3%83%AB"
response = requests.get(URL)
soup = BeautifulSoup(response.text, "lxml")

target = soup.find("a", text="密度")
print(target.parent.next_sibling.next_sibling.text)

sshアクセスが切断すると困る話

小話レベルですが、sshアクセスしていて毎回切断して困るという方がいたので、screen, tmux(->byobu)のようなターミナルマルチプレクサを使うか、moshという回線環境を変えても接続を維持してくれるツールを紹介しました。

まとめ

この話以外にも、学生さんがデータ分析や機械学習系の相談もしたいとありました。やっぱりその分野も必要だし学ばないとなあと(思いつつ 機械学習浜名湖の関係者さんに話を伝えて参加を促してみたり)

白熱した中で終わったので良い回でしたね。スタッフ皆さんお疲れさまでした!

About Me

買ったり作ったり考えたり試したの日々の記録です