質問編集履歴

4

codeを正しました。

2020/07/08 10:30

投稿

kawaxxx
kawaxxx

スコア3

test CHANGED
File without changes
test CHANGED
@@ -36,27 +36,11 @@
36
36
 
37
37
 
38
38
 
39
-
40
-
41
-
42
-
43
- '''
44
-
45
- html = requests.get(url).text
46
-
47
- soup = BeautifulSoup(html,"html.parser") #AttributeError: 'Response' object has no attribute 'contents'
48
-
49
- '''
50
-
51
- #どちらの書き方でも可能らしい
52
-
53
39
  html = requests.get(url)
54
40
 
55
41
  soup = BeautifulSoup(html.content,"html.parser") #AttributeError: 'Response' object has no attribute 'contents'
56
42
 
57
43
 
58
-
59
- #print(soup("script"))
60
44
 
61
45
  for script in soup(["script", "style"]):#スクリプトやスタイルを含む要素を取り除く
62
46
 
@@ -70,11 +54,7 @@
70
54
 
71
55
  lines= [line.strip() for line in text.splitlines()]
72
56
 
73
-
74
-
75
57
  text="\n".join(line for line in lines if line)
76
-
77
-
78
58
 
79
59
  print(text)#空白、タグなし
80
60
 

3

改定後の全文をのせました。

2020/07/08 10:30

投稿

kawaxxx
kawaxxx

スコア3

test CHANGED
File without changes
test CHANGED
@@ -70,25 +70,11 @@
70
70
 
71
71
  lines= [line.strip() for line in text.splitlines()]
72
72
 
73
- '''
74
73
 
75
- <=
76
-
77
- .strip()では引数に指定したものを文字列の文頭文末から削除することができます。 今回のように引数に何も指定しなければ空白(改行等中身のないもの)を全削除
78
-
79
- .splitlines()は改行ごとに要素をリストに入れます。
80
-
81
- '''
82
74
 
83
75
  text="\n".join(line for line in lines if line)
84
76
 
85
- '''
86
77
 
87
- <=.joinはリストを文字列に変換します。
88
-
89
- ここで、それぞれのリストの中身ごとに改行して文字列に戻していきます。このとき注意点は、「''」のような中身が何もないlineは無視することです。そのためにif lineが必要です。
90
-
91
- '''
92
78
 
93
79
  print(text)#空白、タグなし
94
80
 

2

改定後の全文をのせました。

2020/07/08 10:22

投稿

kawaxxx
kawaxxx

スコア3

test CHANGED
File without changes
test CHANGED
@@ -19,3 +19,83 @@
19
19
  このようにURL内の数字を変えながらスクレイピングしていきたいです。可能なのでしょうか。
20
20
 
21
21
  1つのwebサイトからurlを取得してきてスクレイピングする作業ができ、ループで同じように複数のurlから取得したいです。urlは末だけ異なるものです。ヒントをください。
22
+
23
+ ```ここに言語を入力
24
+
25
+ import requests
26
+
27
+ from bs4 import BeautifulSoup
28
+
29
+
30
+
31
+ # Webページを取得して解析する
32
+
33
+ for i in range(3):
34
+
35
+ url = "https://portal.kyoto-wu.ac.jp/Syllabus/syllabusView?syllabusYear=2020&syllabusNo=K1-{153 + i}&kougicd=' + f'{4553 + i}'"
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ '''
44
+
45
+ html = requests.get(url).text
46
+
47
+ soup = BeautifulSoup(html,"html.parser") #AttributeError: 'Response' object has no attribute 'contents'
48
+
49
+ '''
50
+
51
+ #どちらの書き方でも可能らしい
52
+
53
+ html = requests.get(url)
54
+
55
+ soup = BeautifulSoup(html.content,"html.parser") #AttributeError: 'Response' object has no attribute 'contents'
56
+
57
+
58
+
59
+ #print(soup("script"))
60
+
61
+ for script in soup(["script", "style"]):#スクリプトやスタイルを含む要素を取り除く
62
+
63
+ script.decompose() #.decompose()は、削除のメソッド
64
+
65
+ #print(soup)
66
+
67
+ text=soup.get_text()#テキストのみ=タグ取り
68
+
69
+ #print(text) #タグなし、空白あり
70
+
71
+ lines= [line.strip() for line in text.splitlines()]
72
+
73
+ '''
74
+
75
+ <=
76
+
77
+ .strip()では引数に指定したものを文字列の文頭文末から削除することができます。 今回のように引数に何も指定しなければ空白(改行等中身のないもの)を全削除
78
+
79
+ .splitlines()は改行ごとに要素をリストに入れます。
80
+
81
+ '''
82
+
83
+ text="\n".join(line for line in lines if line)
84
+
85
+ '''
86
+
87
+ <=.joinはリストを文字列に変換します。
88
+
89
+ ここで、それぞれのリストの中身ごとに改行して文字列に戻していきます。このとき注意点は、「''」のような中身が何もないlineは無視することです。そのためにif lineが必要です。
90
+
91
+ '''
92
+
93
+ print(text)#空白、タグなし
94
+
95
+
96
+
97
+ ```
98
+
99
+
100
+
101
+ 思うような結果がでませんでした。どうなっているのでしょうか。

1

わかりやすく書きました

2020/07/08 10:21

投稿

kawaxxx
kawaxxx

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1 +1,21 @@
1
+ ```ここに言語を入力
2
+
3
+ https://syllabusView?syllabusYear=2020&syllabusNo=K1-152&kougicd=0004552&request_locale=ja
4
+
5
+ ```
6
+
7
+ K1-153&kougicd=0004553
8
+
9
+ K1-154&kougicd=0004554
10
+
11
+ K1-155&kougicd=0004555
12
+
13
+ .....
14
+
15
+ K1-164&kougicd=0004564
16
+
17
+ .....
18
+
19
+ このようにURL内の数字を変えながらスクレイピングしていきたいです。可能なのでしょうか。
20
+
1
21
  1つのwebサイトからurlを取得してきてスクレイピングする作業ができ、ループで同じように複数のurlから取得したいです。urlは末だけ異なるものです。ヒントをください。