1. 程式人生 > >scrapy xpath選擇器多級選擇錯誤

scrapy xpath選擇器多級選擇錯誤

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選擇器多級選擇錯誤