質問編集履歴

1

質問内容の修正

2019/07/08 08:14

投稿

TON-B
TON-B

スコア21

test CHANGED
@@ -1 +1 @@
1
- 【Python(スクレピング初心者)】URLの取得方法
1
+ 【Python】ページのタトル、URLの取得方法
test CHANGED
@@ -2,29 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- Google検索をして上位5つのページを開く」こと
5
+ 入力した文字でGoogle検索をして上位5つのページの名前とURL出力する
6
-
7
-
8
-
9
- 手順
10
-
11
- 1、Googleの検索画面へ移動
12
-
13
- 2、Googleの検索画面のHTMLを得る
14
-
15
- 3、上位5つの<href>からリンクを取得
16
-
17
- 4、URLを得る
18
-
19
- 5、webbrouserでopen
20
-
21
-
22
6
 
23
7
  ### 相談内容
24
8
 
25
9
 
26
10
 
27
- URLの取得方法つまづいている
11
+ スクレイピングに関する質問す。
12
+
13
+ 上記の目標のある通り「入力」→「Googleの検索画面のHTMLを取得」→「上位5つのHPのURLと名前を出力」まで行いたいのですが、HP以外のもの(例えば、「画像」や「日本語のページを検索」など)の名前とURLまで取得してしまいます。自分なりに取得方法を調べていましたが除外する方法がわからず詰まっています。どなたか解決方法をご教授いただければ幸いです。
28
14
 
29
15
 
30
16
 
@@ -38,61 +24,33 @@
38
24
 
39
25
  import requests
40
26
 
41
- import bs4
42
-
43
- import webbrowser
27
+ from bs4 import BeautifulSoup as bs
44
28
 
45
29
 
46
30
 
47
- #「Googleの検索画面」のHTML変数resへ格納
31
+ data = input("検索したい文字入力してください:")
48
32
 
49
- input_data = input("文字を入力してください:")
50
-
51
- print("「"+input_data + "」を検索中……")
52
-
53
- res = requests.get("https://www.google.com/search?q="+ input_data)
33
+ res = requests.get("https://www.google.com/search?q=" + data)
54
34
 
55
35
 
56
36
 
57
- #ファイルにresを保存
37
+ res = res.text
58
38
 
59
- with open("new_file.html","wb")as f:
39
+ soup = bs(res,"html.parser")
60
-
61
- f.write(res.content)
62
40
 
63
41
 
64
42
 
65
- op = open("new_file.html")
43
+ tags = soup.find_all("a")
66
44
 
45
+ for i in tags:
46
+
47
+ print(i.string)
48
+
67
- soup = bs4.BeautifulSoup(op,"html.parser")
49
+ print(i.get("href"))
68
50
 
69
51
 
70
52
 
71
- count = 0
72
-
73
-
74
-
75
- #URLを取得
76
-
77
- for i in soup.find_all('a'):
78
-
79
- count += 1
80
-
81
- #問題点↓
82
-
83
- if count < 6:
84
-
85
- x = i.get('href')
86
-
87
- print(x)
53
+ print(soup)
88
-
89
- #webbrowser.open(i)
90
-
91
- else:
92
-
93
- count = 0
94
-
95
- break
96
54
 
97
55
 
98
56
 
@@ -101,27 +59,3 @@
101
59
 
102
60
 
103
61
  ### 試したこと
104
-
105
-
106
-
107
- 例えば「Python」で検索した場合、保存したコードを保存したnew_file内でのURLのひとつは「https://internet.watch.impress.co.jp/docs/news/1194299.html&amp;sa=U&amp;ved=2ahUKEwiY_ofE5qHjAhVEULwKHYz-BjsQ0PADMAF6BAgKEAU&amp;usg=AOvVaw3VQYKKcagHf3lHAxhoVT7o」になっている。
108
-
109
-
110
-
111
- 目的はこうしたURLの取得だが、上記のコードで得られたのは
112
-
113
- 「/?sa=X&ved=0ahUKEwiY_ofE5qHjAhVEULwKHYz-BjsQOwgC」
114
-
115
- 「/?output=search&ie=UTF-8&sa=X&ved=0ahUKEwiY_ofE5qHjAhVEULwKHYz-BjsQPAgE」
116
-
117
- 「/search?q=Python&ie=UTF-8&gbv=1&sei=QV4hXdjZOsSg8QWM_ZvYAw」
118
-
119
- 「/search?q=Python&ie=UTF-8&source=lnms&tbm=nws&sa=X&ved=0ahUKEwiY_ofE5qHjAhVEULwKHYz-BjsQ_AUICCgB」
120
-
121
- 「/search?q=Python&ie=UTF-8&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiY_ofE5qHjAhVEULwKHYz-BjsQ_AUICSgC」
122
-
123
-
124
-
125
- の5つ。
126
-
127
- 正しい取得方法がわからず悩んでいる。