通过C#中的WebBrowser控件获取HTML源代码

Roc*_*cqu 11 c#

我尝试以下列方式获取HTML Source:

webBrowser1.Document.Body.OuterHtml;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.例如,如果原始HTML源是:

<html>
<body>
    <div>
        <ul>
            <li>
                <h3>
                    Manufacturer</h3>
            </li>
            <li><a href="/4566-6501_7-0.html?

filter=1000036_3808675_100021_10194772_">Sony </a>(44)</li>
            <li><a href="/4566-6501_7-0.html?

filter=1000036_108496_100021_10194772_">Nikon </a>(19)</li>
            <li><a href="/4566-6501_7-0.html?

filter=1000036_3808726_100021_10194772_">Panasonic </a>(37)</li>
            <li><a href="/4566-6501_7-0.html?

filter=1000036_3808769_100021_10194772_">Canon </a>(29)</li>
            <li><a href="/4566-6501_7-0.html?

filter=1000036_2913388_100021_10194772_">Olympus </a>(21)</li>
            <li class="seeAll"><a href="/4566-6501_7-0.html?

sa=1000036&filter=100021_10194772_" class="readMore">See all manufacturers </a></li>
        </ul>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但输出webBrowser1.Document.Body.OuterHtml是:

<body>
    <div>
        <ul>
            <li>
                <h3>
                    Manufacturer</h3>
                <li><a href="/4566-6501_7-0.html?filter=1000036_3808675_100021_10194772_">Sony </a>(44)
                    <li><a href="/4566-6501_7-0.html?filter=1000036_108496_100021_10194772_">Nikon </a>(19)
                        <li><a href="/4566-6501_7-0.html?filter=1000036_3808726_100021_10194772_">Panasonic
                        </a>(37)
                            <li><a href="/4566-6501_7-0.html?filter=1000036_3808769_100021_10194772_">Canon </a>
                                (29)
                                <li><a href="/4566-6501_7-0.html?filter=1000036_2913388_100021_10194772_">Olympus </a>
                                    (21)
                                    <li class="seeAll"><a class="readMore" href="/4566-6501_7-0.html?sa=1000036&amp;filter=100021_10194772_">
                                        See all manufacturers </a></li>
        </ul>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

你可以看到,许多人</li>都迷失了.

有没有办法WebBrower正确控制HTML源代码?请注意,在我的应用程序中,我尝试使用WebBrowser向每个节点添加坐标信息,并使用坐标信息输出其HTML源,该坐标信息作为节点的属性添加.

任何人都可以帮我一个忙吗?

Vin*_*ayC 9

尝试使用DocumentTextDocumentStream属性.


Roc*_*cqu 5

谢谢你们。我最终的解决方案是:首先,使用body.outlineHtml获取html源。<li>因为 body.outlineHtml 可能会丢失和 的结束标记<td>,所以第二步是使用 tidy 修复 HTML 源。完成这些之后,我们就可以得到没有错误的 HTML 源代码