scrapy xpath選擇器多級選擇錯誤
阿新 • • 發佈:2018-10-07
span resp rap spa rac res pat style 出現
在學習scrapy中用xpath提取網頁內容時,有時要先提取出一整個行標簽內容,再從行標簽裏尋找目標內容。出現一個錯誤。
錯誤代碼:
def parse(self, response): sel = scrapy.Selector(response) sel_li = sel.xpath(‘/html/body/div[2]/div[5]/div[1]/ul/li‘) for i in sel_li: print(i.xpath(‘//h5/a/text()‘).extract()[0])
結果:
大嘴巴第二季 大嘴巴第二季 大嘴巴第二季 大嘴巴第二季 大嘴巴第二季 大嘴巴第二季
...
提取到的內容都是第一個下的後續內容
修稿後代碼:
def parse(self, response): sel = scrapy.Selector(response) sel_li = sel.xpath(‘/html/body/div[2]/div[5]/div[1]/ul/li‘) for i in sel_li: print(i.xpath(‘.//h5/a/text()‘).extract()[0])
結果:
大嘴巴第二季 新百戰天龍第三季 丹麥淫妖第一季 糟糕歷史第七季 無恥之徒第九季 ...
在子xpath內路徑前加 . 表示從當前查找,之後後續內容正常得到
其他方法:
def parse(self, response): sel = scrapy.Selector(response) sel_li = sel.xpath(‘/html/body/div[2]/div[5]/div[1]/ul/li‘) for i in sel_li.extract(): print(scrapy.Selector(text=i).xpath(‘//h5/a/text()‘).extract()[0]) print(scrapy.Selector(text=i).xpath(‘.//h5/a/text()‘).extract()[0])
scrapy xpath選擇器多級選擇錯誤