2017-06-18 129 views
1

我目前正在學習使用Python和Beautiful Soup進行網頁報廢。我給出的任務,其網頁被有星級CSS僞元素使用BeautifulSoup4從CSS3僞元素獲取內容

<span class="bb_rating bble_50"> 
    ::before 
    ::after 
</span> 

bble_50::after { 
    content: "\e00b\e00b\e00b\e00b\e00b"; 
} 

enter image description here

我想知道我怎樣才能從CSS僞元素裏面的內容? 需要幫助。謝謝

+0

看起來像一個旅行顧問。是不是?你能展示一下你如何獲得頁面源代碼?謝謝。 – alecxe

+0

是的,它來自旅行顧問,但我的導師只是改變了一些CSS,所以我不能從任何地方複製粘貼。 :) – raju

回答

1

我不認爲你應該實際去解析CSS在這裏。只需按類別劃分出的類名

class_to_rating = { 
    "bble_45": 4.5, 
    "bble_50": 5 
} 
elm = soup.select_one(".bb_rating") 
rating_class = next(value for value in elm["class"] if value.startswith("bble_")) 

print(class_to_rating.get(rating_class, "Unknown rating")) 
+0

聽起來不錯。謝謝你。但是有沒有什麼辦法可以實際獲得僞選擇器。我可以使用javascript,如果我使用Node.js – raju

+0

@raju,那麼CSS解析器就像['tinycss'](https://tinycss.readthedocs.io/en/latest/)。總是有正則表達式。而且,如果'selenium'是一個選擇,它可能有助於通過['value_of_css_property'](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote)到達「content」css屬性.webelement.WebElement.value_of_css_property).. – alecxe

+0

非常感謝。這有幫助。在「partial_entry」類中點擊「更多」後,如何才能獲得內容?我應該爲此打開另一個問題。 – raju