【问题标题】:html agility pack is returning javascript code except the actual Htmlhtml 敏捷包正在返回除实际 Html 之外的 javascript 代码
【发布时间】:2016-05-05 04:30:37
【问题描述】:

我想使用 c# 控制台从使用 html 敏捷包的网站获取链接,但是有用 li 和 href 标记编写的 java 脚本代码 为什么 java 脚本在单击时更改代码我不知道请告诉我解决方案如何获取实际代码

<li onmouseover="activate_menu('top-menu-61', 61); void(0);" onmouseout="deactivate_menu('top-menu-61', 61);"><a href="javascript:void();

我可以在我的 li 和标签中看到这个,如何解决这个问题并获取实际的 html,以便我可以获取更多链接

【问题讨论】:

    标签: javascript c# parsing html-agility-pack


    【解决方案1】:

    尝试使用浏览器自动化工具(如Selenium WebDriver)在将其传递给 HtmlAgilityPack 进行解析之前,利用真实浏览器完全生成网页。使用 Selenium 应该相当容易,如下所示。您只需确保事先正确安装了所有需要的工具(Selenium 库和浏览器驱动程序):

    // Initialize the Chrome Driver (or any other supported browser)
    using (var driver = new ChromeDriver())
    {
        // open the target page
        driver.Navigate().GoToUrl("the_targt_page_url_here");
    
        //maybe add selenium waits if needed, 
        //to wait until certain element appear in the page
    
        //pass the HTML page to HAP's HtmlDocument
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(driver.PageSource);
    }
    

    Selenium 还提供了在页面中定位元素的方法,因此可以根据需要将 HAP 完全替换为 Selenium。

    【讨论】:

    • 字符串 html; IWebDriver driver = new OpenQA.Selenium.PhantomJS.PhantomJSDriver(); driver.Navigate().GoToUrl(url); HtmlAgilityPack.HtmlDocument 文档 = 新 HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(driver.PageSource); html = 驱动程序.PageSource;已经尝试过这段代码,但是当我在 li 和一个标签中看到它时,它仍然返回那个 java 脚本代码而不是一个正确的 href
    • @MuhammadMateen 我明白了,我认为误解了这个问题。在这种情况下,href 可以被认为是 empty,因为它不携带任何有用的信息。对点击的链接采取的实际操作是执行一系列 javascript 代码,这些代码可以是任何东西(不一定重定向到链接)。请参阅:stackoverflow.com/questions/134845/…
    • 使用 selenium(不是 HAP),您可以使用 FindElement() 找到链接,然后对其执行点击操作运行 javascript...
    • @MuhammadMateen 如果我不够清楚,我的意思是这里没有 javascript 呈现的“实际 HTML”之类的东西。 href 包含防止默认链接点击行为的 JS,并可能将其替换为 onclick 事件处理程序,如上面链接问题中所述..
    • 是的 onclick 事件导致该链接或代码的更改,我使用了 selenium,但仍然没有得到不变的源,例如 onclick 每次都会更改它,或者我不知道如何将 selenium 传递给 HAP,
    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2012-07-18
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多