XPath當匹配標簽判斷text()判斷內容失敗的問題及解決
問題復現
在爬取網站的時候我使用XPath去抓取網頁上的內容,XPath運算式來精準獲取需要的標簽內容,
當我對如下一段html代碼撰寫XPath運算式抓取的時候出現了問題,代碼如下,片名兩個字中間有七個空格,我想要獲取<dd></dd>中的內容,
<dl class="clearfloat margin-30"> <dt>片 名</dt> <dd>愛貓之城</dd></dl>
我很自然地使用了如下的運算式,
FilmName = html.xpath('//dt[text()="色 彩"]/following-sibling::dd/text()')
FilmName = html.xpath('//dt[text()="色 彩"]/following-sibling::dd/text()')
但是竟然沒有獲取到,于是把轉義字符換成7個空格也是沒有用,
解決思路
我使用另一種辦法把<dt></dt>中的內容用text()抓取出來,
FilmName = html.xpath('/html/body/section[3]/div/ul/li/div[2]/ul[2]/dl[1]/dt/text()')
得到內容為:
'色\xa0\xa0\xa0\xa0\xa0\xa0\xa0彩'
這個是才意識到,在XPath中匹配的是unicode編碼的不間斷空格符( ),所以將上面的空格全部替換為’\xa0‘即可,
FilmName = html.xpath('//dt[text()="色\xa0\xa0\xa0\xa0\xa0\xa0\xa0彩"]/following-sibling::dd/text()')
問題解決,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/39044.html
標籤:HTML5
上一篇:前端校招知識體系之HTML5
下一篇:vue實作簡易計算器
