2014-01-18 24 views
-1

我從this page中提取數據。我能夠獲得我需要的所有信息,除了前100名內的每個故事的「排名」(每個元素標題左側的數字爲,即)。當我在Chrome中檢查元素時,找不到任何將數字寫入頁面的HTML代碼和數字似乎都不是圖像。在HTML源指向號元素是「::之前」:我無法獲得HTML頁面上元素的值

<li class="bucket-item"> 
<div data-post-id="dfa6bc73bd8a" class="post-item post-item-small post-status-"> 
::before <!-- this is what points to the number of the page--> 
... 

是否有一個腳本或代表,我很想念的帖子在上面-100等級的圖像?

+2

您[通過刮取他們的內容違反了他們的服務條款](https://medium.com/policy/9db0094a1e0f):「不要從中型服務中刪除中型服務或內容。」 –

+0

謝謝你指出@JohnConde。我對此很陌生,所以我仍然想了解他們如何渲染數字。 – user3093455

+0

它使用:在css中的before和counter-increment屬性。 –

回答

1

撇開你在做什麼的問題違反了Medium的ToS,::beforeCSS pseudo-element。它不會出現在HTML標記中,而是像一個虛擬元素,在特定選擇器的元素之前注入,您可以將樣式應用於該元素。

在這種情況下,選擇器是.ordered-posts .post-item-small:before,所以僞元素插入在出現在.ordered-posts元素中的每個.post-item-small之前。

Psuedo-elements通常與CSS生成的內容一起使用,它可以添加一些東西以顯示在僞元素內。在這種情況下,內容是從CSS計數器生成的,每次匹配元素出現時CSS計數器都會增加,因此列表似乎被編號!如果你重新排列它,你不必擔心更新所有的數字;櫃檯自動處理它。很酷!

下面是::before僞元素的一個很好的參考,以及CSS content屬性的良好書寫。

只是爲了好玩:在一些cool stuff上的好帖子你可以用僞元素做。

+1

謝謝@adamsque這是一個非常明確和簡潔的解釋。我發現很多CSS屬性都很神祕,所以我很高興你插話。謝謝。 – user3093455

1

根據樣式表,顯然它使用了一些計數排序機制:

content: counter(posts-counter) ". "; 
counter-increment: posts-counter; 

如果提取裝置的提取順序的故事,你可以添加提取每個故事後增加了1計數器?這可能是你最好的選擇,因爲每個數字都依賴於前一個數字。