我正在嘗試爲TripAdvisor建立一個Python Scrapy蜘蛛,並試圖爲每個評論拉取泡沫/星級評分。我已經瀏覽了幾個在線教程,但它們看起來已經過時了,因爲泡泡圖片的標籤似乎已經發生了變化。Xpath:訪問嵌套@alt變量
目前,我正在嘗試根據TripAdvisor提供的HTML中每個氣泡評級的@alt變量文本。這是我想要的片段訪問:
<div class="rating reviewItemInline">
<span class="ui_bubble_rating bubble_50">
::before
::after
</span>
的@alt變量位於即使它不會出現在出於某種原因Object Inspector中「ui_bubble_rating」類中。我可以通過使用XPath的訪問在Python:
response.xpath("//span[@class[contains(.,'ui_bubble_rating')]]/@alt")
不過,我只是想拉從實際的評論@alt在頁面上(也有在同一頁共享上鍊接的其他酒店其他幾個泡沫的評分「 ui_bubble_rating「標籤)。所以,我試圖通過一定的專區內只選擇跨度類「ui_bubble_rating」縮小下來:
response.xpath("//div[@class[contains(., 'reviewItemInline')]]//span[@class[contains(.,'ui_bubble_rating')]]")
此工程將它縮小到每個我想第5條的評論,但只要我釘在在「/ @ ALT」上面的XPath結束時,我得到了一個空白列表返回:
In [444]: response.xpath("//div[@class[contains(., 'reviewItemInline')]]//span[@class[contains(.,'ui_bubble_rating')]]/@alt")
Out[444]: []
如果我只是刪除我的XPath上半年:
//div[@class[contains(., 'reviewItemInline')]]
,讓它像這個:
response.xpath("//span[@class[contains(.,'ui_bubble_rating')]]/@alt").extract()
我得到我需要的東西:評級列表(即: ['4.5分,共5分'5分,共5分'])
我懷疑它與我通過「//」或「/」或任何「/ */「等,但它可能與」:: before/:: after「行有關,以及我不確定這些函數的功能。我只是不熟悉XPath,找出爲什麼我不能提取這個值。
我不確定你是否完全正確地說'span class =「ui_bubble_rating」'沒有'@ alt'變量。當我編寫'response.xpath'(「// span [contains(@ class,'ui_bubble_rating')]/@ alt」)。extract()'我收到我需要的東西:'['4.5分, ,'5分,共5分',...]'。但是,如果它嵌套在'div class =「rating reviewItemInline」'中,我只想要'span class =「ui_bubble_rating」'。只要我將'(「// div [@ class ='rating reviewItemInline']'粘貼到'// span ...'xpath上面,我就會得到空列表'[]'。」 –
我可能會誤解,但我理解你只想要用戶的收視率 –
而且要添加,列表爲空,因爲就像我在我的答案中所述(代碼是從tripadvisor複製的) span標籤中沒有@alt屬性用於用戶評論 –