質問: min(5, len(link_elems)) for i in range(num_open): webbrowser.open('http://google.com' + link_elems[i].get('href')) ``` 【保存場所・ファイル名その1】 "11-5-lucky.py"というファイル名でデスクトップのPython Scriptフォルダに保存 【コマンドプロンプトでの入力とエラーメッセージ】 C:\Users\●●●●●>Desktop\Python Scripts\11-5-lucky.py 'Desktop\Python' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ("Desktop\Python Scripts\11-5-lucky.py" は自身で入力) 【試したこと】 ⓵絶対パスのScriptsフォルダにファイルを保存し再度トライ(ファイル名は単なる'lucky.py'に変更) (コマンドプロンプトへの入力とエラーメッセージ) C:\Users\●●●●●>AppData\\Local\\Programs\\Python\\Python38-32\Scripts\lucky.py 'Shohei Ohtani' ''Shohei' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ⓶py.exe のバッチファイルの作成 @py.exe C:\Users\●●●●●>AppData\\Local\\Programs\\Python\\Python38-32\Scripts\lucky.py %* というバッチファイルを作り、pythonScripts.bat として下記フォルダに保存 フォルダ名 C:\Users\●●●●●>AppData\\Local\\Programs\\Python\\Python38-32\Scripts (→ ⓵と同じくコマンドプロンプトに入力:エラーメッセージも出ないが、Web頁も開かれない) C:\Users\●●●●●>AppData\\Local\\Programs\\Python\\Python38-32\Scripts\lucky.py Shohei Ohtani C:\Users\●●●●●> ⓷上記⓵⓶について ファイル名を 'lucky.py'から'11-5-lucky.py'に変更 (作業後のコマンドプロンプトのインプットとアウトプット) C:\Users\●●●●●>AppData\\Local\\Programs\\Python\\Python38-32\Scripts\11-5-lucky.py 'Shohei Ohtani' Googling... C:\Users\●●●●●> (上記⓶同様エラーメッセージも出ないが、Web頁も開かれない) 以上、長々と失礼しますが、よろしくお願いします。 takaoioi1
回答: ``` #! python3 import requests, sys, webbrowser, bs4 print('Googling...') res = requests.get('http://google.com/search?q=' + ' '.join(sys.argv[1:])) res.raise_for_status() soup = bs4.BeautifulSoup(res.text,"html.parser") link_elems = soup.select('.kCrYT a') print(link_elems) num_open = min(5, len(link_elems)) for i in range(num_open): webbrowser.open('http://google.com' + link_elems[i].get('href')) ``` 当方の環境ではこのような形なら動作しました。 憶測で恐縮ですが、例えばGoogleChromeなどで見えるclassとsoupの中のクラス名が同じではないことが原因かと思われます。 一度soupの中身から必要なclass名を取り出してからselectすると良いかと思われます。 以上で今回の問題については解決するかと思われます。 あと `res = requests.get('http://google.com/search?q=' + ' '.join(sys.argv[1:]))`の`q=`の部分の`=`は必要なようなのでお気をつけください。 なお、当方は知りませんでしたが、他の回答者さんにもありますが、googleでは禁止されているようなので、併せてお気をつけください。