If today were the last day of my life

やりたいことをがんばるブログ

pandas でScrapingしようとしたらエラーが出た話

環境

  • MBP Late 2016 (Touch Bar 13-inch)
  • PyCharm Community Edition
  • Python 2.7 (Default)

書いたコード

  • 適当なHTMLのtableからデータを取ってJson出力したい
import pandas

url = 'http://npb.jp/announcement/roster/roster_0605.html'
df = pandas.io.html.read_html(url)
df[3].to_json('roster_0605.json',  force_ascii=False)

とれたデータ

{
  "0": {
    "0": "千葉ロッテマリーンズ",
    "1": "東北楽天ゴールデンイーグルス"
  },
  "1": {
    "0": "投手",
    "1": "投手"
  },
  "2": {
    "0": 67,
    "1": 22
  },
  "3": {
    "0": "金森 敬之",
    "1": "戸村 健次"
  }
}

遭遇したエラー

  • そもそもライブラリが全然足りていなかったので、スクレイピング関連を一式インポートした
  • PyCharm -> File -> Default Settings -> Project Interpreter の「+」で追加
    • pandas, lxml, html5lib, beautifulsoup4, six
  • その後、以下が発生
    • ImportError: cannot import name viewkeys
    • ぐぐったら、sixが古いっぽい。更新して解決。
      1. cd /Library/Python/2.7/site-packages
      2. sudo -H pip install six==1.10.0 -t .