標籤:bsp tor 路徑 標籤 曆史 strong cto parse def
在學習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選取器多級選擇錯誤