我正在尝试使用CSQuery来描述站点的DOM。如果我在IE中打开一个站点并检查一个元素,则它的HTML与使用CSQuery.CreateFromUrl方法加载的同一站点略有不同(属性的排序和值之间的间距)。例如,由IE生成的div样式为“style = margin-bottom:0.5em;”和相同的div CSQuery的Render方法生成不同的HTML“style = margin-bottom:0.5em;” [之后没有空格]。为什么IE生成的DOM和CSQuery DOM有区别?
,当我创建像CSQuery选择的结果“DIV [风格=‘保证金左:0.5em;’]”这是行不通的,因为CSQuery的内部DOM没有之间的空间“:”和'0.5'。
我的问题是我的应用程序用户将使用IE来检查DOM元素,因此创建CSS选择器来使用CSQuery查询DOM。对于这种情况,我可以从代码中的选择器中删除空格,但我不想这样做,因为其他选择器之间可能存在一些其他细微差异。
那么有什么办法可以确保CSQuery生成与IE相同的DOM吗? 我尝试过使用CSQuery.Creat(HTML通过IE返回),但CSQuery仍然以不同于IE DOM的方式格式化HTML。
感谢, 托尼
我在创建方法中尝试了HtmlParsingMode和HtmlParsingOptions的不同组合,但没有用。关于使用Ajax加载额外内容的网站,CSQuery.CreatFromUrl如何处理这些网站并为它们生成DOM? – TonyMull
即使我从我的webbrowser控件获取html,然后从这个html创建CSQuery对象,它会稍微改变/修改html的格式... – TonyMull
@TonyMull如果一个网站通过AJAX加载内容,CsQuery将无法处理该内容。这种情况下,你需要找到一个网址并由你自己加载。 进行测试: 在VS浏览器上运行您的URL并查看它返回的响应。如果它与您在浏览器中获得的相同,那么CsQuery中的问题,但如果它不是... – nazarkin659