【问题标题】:Import HTML page after full loading (to parsing)完全加载后导入 HTML 页面(用于解析)
【发布时间】:2016-09-19 15:10:28
【问题描述】:

我想通过 url 读取和解析页面。它的网址是我动态创建的。 https://search.aviasales.ru/MOW2405CHI30061(城市从 - 驱逐出境日期 - 城市到 - 日期到 - 数量)。 但它的页面没有加载完整。在最初的几秒钟内仅加载部分。如果我尝试像这样加载它:

        System.Net.WebClient web = new System.Net.WebClient();
        web.Encoding = UTF8Encoding.UTF8;

        string str = web.DownloadString("https://search.aviasales.ru/MOW2405ATH30061");
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(str);

我得到了页面的一部分。但我需要其他部分。一段时间后它会部分加载(角度脚本或部分视图)。如何加载完整的页面?

【问题讨论】:

    标签: c# asp.net-mvc parsing html-parsing


    【解决方案1】:

    该页面使用 AJAX 加载数据,因此您的代码只会为您提供基本的容器 HTML,而不是您想要的部分。

    您必须研究主页的来源,阅读 Javascript 并确定它进行了哪些 AJAX 调用来获取数据。然后,您需要调用这些 URL 并解析数据。

    这被称为“屏幕抓取”并且有很多陷阱。值得一读,并确保您知道自己在做什么,因为您可以投入大量工作来抓取他们的页面,只是让他们进行一个简单的更改,从而完全破坏您的代码。

    如果他们有一个你可以调用的 API 也值得一试,因为它会被记录在案并且不会改变。您尝试这样做的方式非常脆弱。

    【讨论】:

    • 谢谢你,Avrohom!获得工作是测试任务的一部分。是的,通常它使用 API,但现在测试任务是通过解析给出的。
    • @Jacobinec 在这种情况下,您仍然需要找到数据服务的 URL 并在代码中使用它,而不是主页 URL。
    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 2014-08-09
    • 2021-10-13
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    相关资源
    最近更新 更多