有些網(wǎng)站的節(jié)點標(biāo)志比較“隨性”仅颇,比如ebay的銷售記錄:http://offer.ebay.com/ws/eBayISAPI.dll?ViewBidsLogin&item=112797791375&rt=nc
當(dāng)采集碰到干擾數(shù)據(jù)時辛润,需要根據(jù)節(jié)點之間的關(guān)系來進行處理:
代碼如下:
node_list = response.xpath('//th[contains(text(), "Date of Purchase")]/../../tr[@bgcolor]')[1:] # ..表示當(dāng)前節(jié)點的父節(jié)點
for node in node_list :
td_text_list = [td.xpath('string(.)').extract_first().replace('\xa0', ' ').strip() for td in node.xpath('./td')
if td.xpath('string(.)').extract_first()] # 加上if判斷是因為頭尾的td節(jié)點文本為''
yield td_text_list
PS: './/td'與'//td'的區(qū)別在于谓苟,'.//td'表示當(dāng)前節(jié)點下的所有td子節(jié)點,而'//td'表示根目錄下的所有td子節(jié)點.