質問編集履歴

2

質問内容を修正しました。

2020/03/12 00:57

投稿

Justin04
Justin04

スコア11

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- _Modulelockを調べたのですがさっぱり分からず…。申し訳ありませんが教えて下さ。よろしくお願い致します。
21
+ _Modulelockを調べたのですがさっぱり分からず…。申し訳ありませんが教えて下さ。よろしくお願い致します。
22
22
 
23
23
 
24
24
 

1

質問内容を変更しました。

2020/03/12 00:57

投稿

Justin04
Justin04

スコア11

test CHANGED
@@ -1 +1 @@
1
- 【Pythonのスクレイピング】Google検索のプログラムが稼働しません
1
+ 【Python】コマンドプロンプトからPython起動とスクレイピング
test CHANGED
@@ -1,8 +1,8 @@
1
- 「退屈なことはPythonにやらせよう」11章のWebスクレイピングで、Googleの検索結果上位5件を自動で開くプログラムを書いているのですが、上手く行きません。どこで躓いているかというと、
1
+ 「退屈なことはPythonにやらせよう」11章のWebスクレイピングで、Googleの検索結果上位5件を自動で開くプログラムを書いているのですが、下記の2点で躓いています。
2
2
 
3
3
 
4
4
 
5
- 1.本書ではコマンドプロンプトに「'拡張子なしのファイル名' '検索したいワード'」でログラムが実行されると書いてあるのですが、「'ファイル名.py' '検索したいワード'」にしないと「[Errno 2] No such file or directory」のエラーが出てしまう。
5
+ 1.本書ではコマンドプロンプトに「'拡張子なしのファイル名' '検索したいワード'」でログラムが実行されると書いてあるのですが、「[Errno 2] No such file or directory」のエラーが出てしまう。「'ファイル名.py' '検索したいワード'」にすると上手くいくのですが、違いが調べてもわかりません。PathにPython.exeのディレクトリを設定したりスクリプトがあるフォルダを設定しましたが駄目でした。
6
6
 
7
7
 
8
8
 
@@ -14,7 +14,11 @@
14
14
 
15
15
 
16
16
 
17
+ →2.に関してはbs4.BeautifulSoupの第2引数に'html.parser'を入れて解決しましたが、コマンドプロンプトで実行すると「Loading...」が表示されるだけ、Anacondaのインタラクティブシェルで実行するとAttributeError: '_ModuleLock' object has no attribute 'name'が表示されてしまいます。
18
+
19
+
20
+
17
- 2点です。解決方法あればお願いいたします。スクリプトは以下の通りです。
21
+ _Modulelockを調べたのですがさっぱり分からず…申し訳ありません教えて下さ。よろしくお願いします。
18
22
 
19
23
 
20
24
 
@@ -30,9 +34,9 @@
30
34
 
31
35
 
32
36
 
33
- print('Googling...')
37
+ print("Loading...")
34
38
 
35
- res = requests.get('http://google.com/search?q=' + ''.join(sys.argv[1:]))
39
+ res = requests.get("https://google.com/search?q=" + " ".join(sys.argv[1:]))
36
40
 
37
41
  res.raise_for_status()
38
42
 
@@ -40,9 +44,9 @@
40
44
 
41
45
  #TODO 上位の検索結果のリンクを取得する
42
46
 
43
- soup = bs4.BeautifulSoup(res.text)
47
+ soup = bs4.BeautifulSoup(res.text, "html.parser")
44
48
 
45
- link_elems = soup.select('.r a')
49
+ link_elems = soup.select(".r a")
46
50
 
47
51
 
48
52
 
@@ -52,6 +56,6 @@
52
56
 
53
57
  for i in range(num_open):
54
58
 
55
- webbrowser.open('http://google.com' + link_elems[i].get('href'))
59
+ webbrowser.open("https://google.com" + link_elems[i].get("href"))
56
60
 
57
61
  ```