Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过C中的WebBrowser控件获取HTML源代码#_C# - Fatal编程技术网

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

C# 通过C中的WebBrowser控件获取HTML源代码#,c#,C#,我尝试通过以下方式获取HTML源代码: webBrowser1.Document.Body.OuterHtml; 但它不起作用。例如,如果原始HTML源是: <html> <body> <div> <ul> <li> <h3> Manufacturer</h3> <

我尝试通过以下方式获取HTML源代码:

webBrowser1.Document.Body.OuterHtml;
但它不起作用。例如,如果原始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>
如您所见,许多
丢失了

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


有人能帮我一个忙吗?

试试使用或属性。

你试过
WebBrowser1.DocumentText
看看这个。


您可以使用System.Net中的
Webclient.DownloadString
(它还有
Webclient.DownloadStringAsync
…)以下是说明:

谢谢大家。我的最终解决方案是:首先,使用
body.outlineHtml
获取html源代码。因为body.outlineHtml可能会丢失
  • 的结束标记,所以第二步是使用tidy修复HTML源代码。在这些之后,我们可以毫无错误地获取HTML源代码

    如果您想要获取WebBrowser控件的整个HTML源代码,那么请使用-WebBrowser1.Document.GetElementsByTagName(“HTML”).Item(0).OuterHtml。当然,这假设您已经正确格式化了HTML,并且HTML标记已经存在。如果你想把它缩小到仅仅是body,那么很明显,把HTML标记改为body标记。通过这种方式,您可以在设置“DocumentText”后获取任何和所有更改。对不起,我是一个VB的家伙,根据需要转换;)

    是,WebBrowser1.DocumentText返回正确的HTML源代码。但是,当我向DOM树中的节点添加一些属性(myIHTMLElement.setAttribute())时,WebBrowser1.DocumentText获取的HTML源不包含任何添加的属性是的,DocumentText和DocumentStream都可以返回正确的HTML源。但是,当我向DOM树中的节点(myIHTMLElement.setAttribute())添加一些属性时,WebBrowser1.DocumentText获取的HTML源不包含任何添加的属性attributes@Rockucqu,那么
    InnerHtml
    property-返回正确的html吗?在我的应用程序中,我需要使用WebBrowser向每个节点添加坐标信息,并将坐标信息作为节点属性添加到HTML源中。Webclient无法执行此任务
    <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>