@ryohata1122 (Ryo Hatakeyama)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Pythonでrequestsを利用するとNameErrorが出ます

Pythonでrequestsを利用するとNameErrorが出ます(インストールは確認済み)

プログラミング初心者です。
pythonでスクレイピングをしたいと思っており、requestsを利用したいです。
コードを実行するとターミナルで以下が返ってきます。
エラーの解決方法をご教示いただけると助かります。

起きているエラー

NameError: name 'requests' is not defined

該当するソースコード

import requests
url = 'https://news.yahoo.co.jp/'
response = requests.get(url)
response.text[:500]

自分で試したこと

requestsがインストールされていないだけ?と思い、pip listで確認したところインストールを確認できました。

certifi    2020.12.5
idna       2.10
requests   2.25.1
setuptools 49.2.1
urllib3    1.26.3

ひょっとしたら、requestsをインストールするフォルダーをミスってるのかとかいろいろ調べたりしたのですが、
なかなか検討がつかず。。よろしくお願いします。

0 likes

2Answer

Python には バージョン2 と バージョン3 があります。
pip はそれぞれにあります。
python のバージョンと pip のバージョンはそれぞれいくつですか?

$ python3 --version
Python 3.8.3

$ pip3 --version
pip 21.0.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
0Like

Comments

  1. @ryohata1122

    Questioner

    ありがとうございます。
    以下結果です。

    python 3.9.1
    pip21.0.1です。

    ```
    python --version
    Python 3.9.1

    pip --version
    pip 21.0.1 from c:\users\xxx\appdata\local\programs\python\python39\lib\site-packages\pip (python 3.9)
    ```

Comments

  1. @ryohata1122

    Questioner

    ありがとうございます。
    はい、以下のように表示されます。



    ```
    pip3 list
    Package Version
    ---------- ---------
    certifi 2020.12.5
    chardet 4.0.0
    idna 2.10
    pip 21.0.1
    requests 2.25.1
    setuptools 49.2.1
    urllib3 1.26.3
    ```

  2. エラーメッセージをすべてコピー&ペーストしていただけますか?
    エラー原因のソースコードも表示されているかと思います。
    ちなみに、requestsをインストールしていない環境で実行してみたら、違うエラーメッセージが表示されました。

    ```
    $ python3 sample.py
    Traceback (most recent call last):
    File "sample.py", line 1, in <module>
    import requests
    ModuleNotFoundError: No module named 'requests'
    ```
  3. @ryohata1122

    Questioner

    ご丁寧にありがとうございます。

    ソースコードは下記です。

    ------------
    import requests
    url = 'https://news.yahoo.co.jp/'
    response = requests.get(url)
    response.text[:500]
    -----------


    エラーは文は以下です。

    --------------
    File "ファイルパス(略)", line 2, in <module>
    response = requests.get(url)
    NameError: name 'requests' is not defined

    ---------------

    インストールはされているぽいんですよね。。。
    中々、同じ症状のエラーもネットに見つからず。。よろしくお願いします。
  4. response = requests.get(url) は 3行目(line 3) ですよね?
    line 2 ということは、import文が抜けているのではありませんか?
    上に書かれた4行のソースコードを別のファイルにコピー&ペーストして、その新しいソースコードを実行してみるとどうなりますか?
  5. @ryohata1122

    Questioner

    ありがとうございます。
    別ファイルで実行したところ、何も反応がないです。
    windowsでデスクトップにvisual studio codeで作成しているのですが、何か関係ありそうですかね。
  6. 4行目を print(response.text[:500]) にすれば受信した内容が表示されると思います。
    VScodeで 行番号を表示できますか?
    1行目が import requests
    3行目が response = requests.get(url) になっていれば問題ないと思いますが。
  7. @ryohata1122

    Questioner

    ありがとうございます!
    printを入れることで以下が返ってきました。
    別ファイルだけでなく、元ファイルでもできました。

    --------
    <!DOCTYPE html>
    <html lang="ja">

    <head>
    <!-- Google Tag Manager -->
    <script>(function (w, d, s, l, i) {
    w[l] = w[l] || [];
    w[l].push({
    'gtm.start':
    new Date().getTime(), event: 'gtm.js'
    });
    var f = d.getElementsByTagName(s)[0],
    j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
    j.async = true;
    j.src =
    'https://www.googletagmanager.com/g
    -----------

    もし差し支えなければ、今までできなかった要因が分かればご教示いただけると幸いです。

  8. @ryohata1122

    Questioner

    わかりました。ありがとうございました!

Your answer might help someone💌