【问题标题】:How could a web spider crawl the content in ::before?网络蜘蛛如何抓取 ::before 中的内容?
【发布时间】:2017-08-30 11:04:19
【问题描述】:

::before::after 等伪元素中的内容实际上并不存在于 DOM 树中。所以,不可能通过选择器找到它。

问题是,我如何提取其中的内容?例如:

<div>This is <span></span>n apple.</div>
...
span::before {
    content : "a"
}

shows : This is an apple.

但是如果我提取div的文本,我只会得到This is n apple.没有span::before中的内容。

我该如何处理这个问题?

【问题讨论】:

  • 和浏览器一样吗? (通过解析和应用 CSS...)
  • @Mr.Alien 不,这是关于如何爬取包含伪元素的第三方网站的问题。
  • @nnnnnn 实际上,我已经尝试过但失败了。应用 CSS 后即使 JS,伪元素中的内容仍然不存在于 DOM 树中,仍然导致定位失败。

标签: css web-crawler pseudo-element scrapy-spider css-content


【解决方案1】:

我该如何处理这个问题?

老实说,不要为此使用伪元素。

伪元素专门设计用于从文档树外部呈现内容。

这种“生成的内容”由::before::after 伪元素的content 属性指定,通常用于添加纯装饰性内容。

因此,搜索引擎应该没有理由将生成的内容编入索引。

https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements

【讨论】:

  • 这个,如果你正在爬取第三方网站,该网站使用生成的内容来做这类事情,那对你来说太糟糕了。
  • 哦,我可以看到这个的用途。如果 DOM 树的内容实际上是“apple”(例如,对于带有图片或其他东西的标识符,“apple”、“pear”等)并且您想用适当的文章来装饰它们。像那样的东西。但当然在这些情况下,没有必要刮掉添加的单词。
  • @BoltClock 指出问题,我需要爬取第三方网站。而这个,使用伪元素显示正常内容,是一种反爬虫技术。
  • @Mr Lister:基本上,如果内容是必不可少的,就不应该生成内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多