teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

サンプルコードの改善

2018/11/15 09:37

投稿

fukazume
fukazume

スコア78

title CHANGED
File without changes
body CHANGED
@@ -24,7 +24,7 @@
24
24
  <td>A2</td>
25
25
  <td>B2</td>
26
26
  <td>
27
- <img src="../../media/test1.gif">
27
+ <img src="../../media/test3.gif">
28
28
  </td>
29
29
  </tr>
30
30
  </tbody>

6

タグ追加

2018/11/15 09:36

投稿

fukazume
fukazume

スコア78

title CHANGED
File without changes
body CHANGED
File without changes

5

誤字訂正

2018/11/06 03:46

投稿

fukazume
fukazume

スコア78

title CHANGED
@@ -1,1 +1,1 @@
1
- 1Python, Scrapyでtd内の複数要素を抽出したい
1
+ Python, Scrapyでtd内の複数要素を抽出したい
body CHANGED
File without changes

4

コード修正

2018/11/05 03:16

投稿

fukazume
fukazume

スコア78

title CHANGED
@@ -1,1 +1,1 @@
1
- Python, Scrapyでtd内の複数要素を抽出したい
1
+ 1Python, Scrapyでtd内の複数要素を抽出したい
body CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  for table_row in table_rows:
38
38
  item = TutorialItem()
39
- item['time'] = table_row.xpath('td[0]/text()').extract_first()
39
+ item['time'] = table_row.xpath('td[1]/text()').extract_first()
40
- item['note'] = table_row.xpath('td[2]/img/@src').extract_first()
40
+ item['note'] = table_row.xpath('td[3]/img/@src').extract_first()
41
41
  yield item
42
42
  ```

3

追記

2018/11/05 03:13

投稿

fukazume
fukazume

スコア78

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,14 @@
1
1
  ###■経緯
2
2
  とあるtableから、3列目のimg数が不規則なtdからsrc属性の値を抽出して、そのテーブル構造(行,列)を保ちながらcsvファイルとして出力を試みています。
3
3
 
4
- その際、複数のimgがtd内にある場合、下のScrapyコードでは、HTML上「◯」のimg srcは抽出できるのですが、「★」の値が抽出できません。
4
+ その際、複数のimgがtd内にある場合、下のScrapyコードでは、**HTML上「◯」のimg srcは抽出できるのですが、「★」の値が抽出できません。**
5
5
 
6
6
  ###■質問
7
7
  HTML上の「◯」「★」両方の値を、テーブル構造(行,列)を保ちながらcsvとして出力できるScrapyコード(XPathの指定方法)を教えていただけますでしょうか。
8
8
 
9
+ なんとなくですが、extract_first()の部分をうまく修正すれば2つ目のimg srcの値「★」も抽出できるのではないかと想像しています。
9
10
 
11
+
10
12
  ```HTML
11
13
  <table>
12
14
  <tbody>

2

コード修正

2018/11/05 02:49

投稿

fukazume
fukazume

スコア78

title CHANGED
File without changes
body CHANGED
@@ -35,6 +35,6 @@
35
35
  for table_row in table_rows:
36
36
  item = TutorialItem()
37
37
  item['time'] = table_row.xpath('td[0]/text()').extract_first()
38
- item['note'] = table_row.xpath('td[1]/img/@src').extract_first()
38
+ item['note'] = table_row.xpath('td[2]/img/@src').extract_first()
39
39
  yield item
40
40
  ```

1

コードを簡略化

2018/11/05 02:35

投稿

fukazume
fukazume

スコア78

title CHANGED
File without changes
body CHANGED
@@ -11,9 +11,12 @@
11
11
  <table>
12
12
  <tbody>
13
13
  <tr>
14
- <td>A1</td>
14
+ <td>A3</td>
15
- <td>B1</td>
15
+ <td>B3</td>
16
+ <td>
17
+ <img src="../../media/test1.gif"> <!-- ◯ -->
18
+ <img src="../../media/test2.gif"> <!-- ★ -->
16
- <td></td>
19
+ </td>
17
20
  </tr>
18
21
  <tr>
19
22
  <td>A2</td>
@@ -21,15 +24,7 @@
21
24
  <td>
22
25
  <img src="../../media/test1.gif">
23
26
  </td>
24
- <tr>
25
- <td>A3</td>
26
- <td>B3</td>
27
- <td>
28
- <img src="../../media/test1.gif"> <!-- ◯ -->
29
- <img src="../../media/test2.gif"> <!-- ★ -->
30
- </td>
31
- </tr>
27
+ </tr>
32
- </tr>
33
28
  </tbody>
34
29
  </table>
35
30
  ```