2017-10-17 40 views
0

我試圖從表格中抓取數據,但是表格數據似乎有相同的xpath。這裏是表的一個例子 - http://www.hpft.nhs.uk/services/find-our-services/hertfordshire/cheshuntScrapy - 如何分割這張表中的數據?

而當我使用response.xpath('//td/text()').extract()它返回整個表。

我想也許我可以使用絕對路徑,例如response.xpath('//tr/td[3]/text()').extract()在本例中返回['01992 818600', '01707 364012', '01707 364003']--理論上講,整個網站的所有表格都應該是動態的?

但是,我想要做的是爲每個表項添加服務,地址和電話作爲我的輸出csv文件中的單獨一行。但我無法弄清楚如何分割我的響應返回的列表數據?我已經設置了我想要使用的項目。

回答

1

你應該遍歷表中的行,然後收集各個字段到項目:

for row in response.xpath('//table[@class="map"]//tr[position() > 1]'): 
    item = dict() 
    item['service'] = row.xpath('./td[1]/text()').extract_first() 
    item['address'] = ' '.join(x.strip() for x in row.xpath('./td[2]/text()').extract()) 
    item['phone'] = row.xpath('./td[3]/text()').extract_first() 
    yield item