###■経緯
とあるtableから、3列目のimg数が不規則なtdからsrc属性の値を抽出して、そのテーブル構造(行,列)を保ちながらcsvファイルとして出力を試みています。
その際、複数のimgがtd内にある場合、下のScrapyコードでは、HTML上「◯」のimg srcは抽出できるのですが、「★」の値が抽出できません。
###■質問
HTML上の「◯」「★」両方の値を、テーブル構造(行,列)を保ちながらcsvとして出力できるScrapyコード(XPathの指定方法)を教えていただけますでしょうか。
なんとなくですが、extract_first()の部分をうまく修正すれば2つ目のimg srcの値「★」も抽出できるのではないかと想像しています。
HTML
1<table> 2 <tbody> 3 <tr> 4 <td>A3</td> 5 <td>B3</td> 6 <td> 7 <img src="../../media/test1.gif"> <!-- ◯ --> 8 <img src="../../media/test2.gif"> <!-- ★ --> 9 </td> 10 </tr> 11 <tr> 12 <td>A2</td> 13 <td>B2</td> 14 <td> 15 <img src="../../media/test3.gif"> 16 </td> 17 </tr> 18 </tbody> 19</table>
PythonScrapy
1table_rows = response.xpath('//table/tbody/tr') 2 3for table_row in table_rows: 4 item = TutorialItem() 5 item['time'] = table_row.xpath('td[1]/text()').extract_first() 6 item['note'] = table_row.xpath('td[3]/img/@src').extract_first() 7 yield item
回答4件
あなたの回答
tips
プレビュー