在用lxml和xpath對一個網站進行解析,在解析的時候出現錯誤-IndexError: list index out of range
原因是在中這個網站的html代碼中有的標識為空,只要加上try.....except 錯誤機制跳過空值就行了
例如:
html=etree.HTML(text) ul=html.xpath("//ul[@class='lists']")[0] lis = ul.xpath("//li") for li in lis: title=li.xpath("@data-title")[0] score=li.xpath("@data-score")[0] duration=li.xpath("@data-duration")[0] region=li.xpath("@data-region")[0] director=li.xpath("@data-director")[0] actors=li.xpath("@data-actors")[0] thumbnail=li.xpath(".//img/@src")[0] movie={ 'title':title, 'score':score, 'duration':duration, 'region':region, 'director':director, 'actors':actors, 'thumbnail':thumbnail } print(movie)
這個代碼在運行之后就會出現錯誤:IndexError: list index out of range
修改之后的代碼:
html=etree.HTML(text) ul=html.xpath("//ul[@class='lists']")[0] lis = ul.xpath("//li") for li in lis: try: title=li.xpath("@data-title")[0] score=li.xpath("@data-score")[0] duration=li.xpath("@data-duration")[0] region=li.xpath("@data-region")[0] director=li.xpath("@data-director")[0] actors=li.xpath("@data-actors")[0] thumbnail=li.xpath(".//img/@src")[0] movie={ 'title':title, 'score':score, 'duration':duration, 'region':region, 'director':director, 'actors':actors, 'thumbnail':thumbnail } print(movie) except IndexError: pass