質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

pythonで表示されたエラー「IPython.utils.traitlets has moved to a top-level traitlets package.」の意味を教えて下さい

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 387

kutu

score 209

お世話になっております。
環境は下記の通りです

Windows WSL -- Ubuntu18.0.4
python3.7.2


https://torahack.com/python-scraping-for-seo/
に記載されているソース

import requests
import bs4
from time import sleep
import pandas as pd
from google.colab import files
import re

# 検索したいキーワードを入力する
listKeyword = ['python', 'スクレイピング']

# 取得したい件数に合わせて数値を変更する
searchNum = str(10)

response = requests.get('https://www.google.co.jp/search?num='+searchNum+'&q=' + ' '.join(listKeyword))
response.raise_for_status()

# 取得したHTMLをパースする
soup = bs4.BeautifulSoup(response.content, "html.parser")

file_prefix = ""
for word in listKeyword:
  if (file_prefix == ""):
    file_prefix += str(word)
  else:
    file_prefix += "-" + str(word)

fileName = file_prefix+'_Top'+searchNum+'.csv'

# csvファイルのヘッダーを設定する
df = pd.DataFrame(columns=['URL','タイトル','ディスクリプション','キーワード'])

sleepCounter = 0

# 検索結果上位サイトのURLを取得する
for a in soup.select('div#search h3.r a'):
  sleepCounter += 1
  url = re.sub(r'/url\?q=|&sa.*', '',a.get('href'))

  try:
    # 取得したURLを読み込む
    search = requests.get(url)
    searchSoup = bs4.BeautifulSoup(search.content, "html.parser")

    # タイトルの取得
    titleList = []
    for a in searchSoup.select('title'):
      titleList.append(a.text)     
    title=''

    for index,item in enumerate(titleList):
      if index==0:
        title = item
      else:
        title = title + ', ' +item

    # ディスクリプションの取得
    descriptionList = []
    for a in searchSoup.select('meta[name="description"]'):
      descriptionList.append(a.get('content'))
    description='No data'

    for index,item in enumerate(descriptionList):
      if index==0:
        description = item
      else:
        description = description + ', ' +item

    # キーワードの取得
    keywordList = []
    for a in searchSoup.select('meta[name="keywords"]'):
      keywordList.append(a.get('content'))     
    keywords = 'No data'

    for index,item in enumerate(keywordList):
      if index==0:
        keywords = item
      else:
        keywords = keyword + ', ' +item

  except: #例外処理:サイトを読み込めなかったときにする処理
    print('Failed to read web site.')

  # 取得したURL、タイトル、ディスクリプション、キーワードを追加する
  outputRow = [url,title,description,keywords]
  s = pd.Series(outputRow, index=['URL','タイトル','ディスクリプション','キーワード']) 
  df = df.append(s, ignore_index=True)

  # 10件以上検索する場合、秒間リクエスト数の制限を守るため、10件ごとに10秒の待機時間を設ける
  if sleepCounter > 10:
    sleep(10)
    sleepCounter = 0

# csvに出力する
df.to_csv(fileName, index=False)

# csvをダウンロードする
files.download(fileName)  


を実行すると下記のエラーが出ます

/.pyenv/versions/3.7.2/lib/python3.7/site-packages/IPython/utils/traitlets.py:5: UserWarning: IPython.utils.traitlets has moved to a top-level traitlets package.
  warn("IPython.utils.traitlets has moved to a top-level traitlets package.")
Traceback (most recent call last):
  File "seo2.py", line 97, in <module>
    files.download(fileName)
  File "/.pyenv/versions/3.7.2/lib/python3.7/site-packages/google/colab/files.py", line 178, in download
    'name': _os.path.basename(filename),
  File "/.pyenv/versions/3.7.2/lib/python3.7/site-packages/google/colab/output/_js.py", line 35, in eval_js
    kernel = _ipython.get_kernel()
  File "/.pyenv/versions/3.7.2/lib/python3.7/site-packages/google/colab/_ipython.py", line 28, in get_kernel
    return get_ipython().kernel
AttributeError: 'NoneType' object has no attribute 'kernel'


サイトの見本ソースを丸々コピーしてもエラーが表示され、うまくいきません。
おわかりになる方いらっしゃいましたらよろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

このコードを一旦何も考えず丸っとコピーしてGoogle Colaboratoryの新しいノートブックに貼り付けてみてください。

と書いてあるとおりgoogle colab専用プログラムだと思います。
自分で変更をしないと動かないです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • Pythonに関する質問
  • pythonで表示されたエラー「IPython.utils.traitlets has moved to a top-level traitlets package.」の意味を教えて下さい