1
A
回答
1
您可以检查源代码以获得详细的答案。所有的“拖动此链接到你的书签栏”并设置了一个javascript的书签,这是有它的源设置为http://www.selectorgadget.com/stable/lib/selectorgadget.js?raw=true
如果你看一下该脚本的页面创建一个脚本元素,你会看到它然后导入其他人来完成这项工作。简短的版本是它似乎使用DOM元素的标记化和递归分析来找出CSS选择器路径。大部分工作在这里完成:http://www.selectorgadget.com/stable/lib/dom.js。
5
标记化大部分都是这样完成的,因此点击元素集合的CSS选择器可以被区分到一起以找到共同点。然后该算法尝试找到包含所选集合中的所有内容的“最佳”选择器,并在拒绝集合中找到任何内容。
它去是这样的:
- 对于每一个选定的DOM节点,产生一个长期的,包容性的CSS选择就是尽可能具体。
- 将所有选定的dom节点的选择器放在一起以找到一个通用的CSS选择器来选择所有选择器。
- 迭代地减少该公共选择器,同时确保它选择'selected'集合中的所有内容以及'rejected'集合中的任何内容。这发生在'simplifyCss'中,并且是一种启发式方法,它以预定义的优先顺序贪婪地删除元素。
相关问题
- 1. 如何使用selector(Rvest)使用selectorgadget来webscrape .dpbox表?
- 2. SelectorGadget选择不可见元素
- 3. 如何工作?
- 4. 如何:(){:| :& } ;:工作
- 5. hgearman工人如何工作?
- 6. set_error_handler不工作我想如何工作
- 7. mpegts如何工作
- 8. AJAX如何工作?
- 9. printf如何工作?
- 10. ArrayAdapter.getView()如何工作?
- 11. jdbc如何工作
- 12. match_parent如何工作?
- 13. DisplacementMapFilter如何工作?
- 14. servlet如何工作?
- 15. sendmsg如何工作?
- 16. TabLayout如何工作?
- 17. paintComponent如何工作?
- 18. WorkItem.Save()如何工作?
- 19. gp_camera_file_get如何工作?
- 20. ACE_Remote_Mutex如何工作?
- 21. Class.forName()如何工作?
- 22. ZipInputStream.getNextEntry()如何工作?
- 23. editData如何工作?
- 24. CommandManager.RequerySuggested如何工作?
- 25. GetSchemaTable()如何工作?
- 26. mysql_insert_id()如何工作?
- 27. hiera如何工作?
- 28. GroupStyles如何工作?
- 29. fsi.ShowDeclarationValues如何工作?
- 30. cvSeqPush如何工作?
是..整个代码甚至可以在这里找到:github.com/iterationlabs/selectorgadget/ but..there没有文档,可以帮助我了解流量/算法。任何帮助? thanx – andrisetiawan 2010-03-27 04:32:33
是的,这不完全是最直接的过程。我不幸没有时间阅读所有内容并记录下来。您可能希望谷歌周围的“标记化”(也称为“词法分析”)和DOM解析的信息。 – zombat 2010-03-27 18:10:46