我正在从 this page 中提取数据.我能够获得我需要的所有信息,除了前 100 名中每个故事的“排名”(即每个元素标题左侧的数字。)当我检查元素时Chrome,我找不到任何将数字写入页面的 HTML 代码,而且数字似乎不是图像。在 HTML 源代码中,指向数字的元素是“::before”:
<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 名中的排名的脚本或图像是我遗漏的?
最佳答案
先不考虑您的行为是否违反了 Medium 的服务条款,::before
是 CSS pseudo-element .它不会出现在 HTML 标记中,但就像一个虚拟元素,注入(inject)到特定选择器的元素之前,您可以对其应用样式。
在这种情况下,选择器是 .ordered-posts .post-item-small:before
, 所以伪元素被插入到每个 .post-item-small
之前出现在 .ordered-posts
中元素。
伪元素常与CSS生成的内容结合使用,可以在伪元素中添加一些显示内容。在这种情况下,内容是从 CSS 计数器生成的,每次出现匹配元素时该计数器都会递增,因此列表看起来是有编号的!如果您重新订购,您不必担心更新所有数字;柜台会自动为您处理。很酷!
这是 ::before 的一个很好的引用伪元素,以及一篇很好的 CSS 文章 content属性(property)。
只是为了好玩:关于一些的精彩帖子 cool stuff你可以用伪元素来做。
关于javascript - 我无法获取 HTML 页面上元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199445/