用C#屏幕抓取HTML

Wil*_*ill 12 c# screen-scraping

我已经完成了屏幕抓取我们的一个遗留Web应用程序的任务,从代码中提取某些数据.数据被格式化并且"应该"每次都显示完全相同.我只是不确定如何去做这件事.这是一个包含页眉和页脚导航的完整html文件,但在这一切的中间是我需要的数据.

我需要提取公司名称值,联系人姓名,电话,电子邮件地址等.

以下是代码的示例:

...html above here

<br /><br />
<table cellpadding="0" cellspacing="12" border="0">
    <tr>
        <td valign="top" align="center">
            <!-- Company Info -->

            <table cellpadding="0" cellspacing="0" border="0">
                <tr>
                    <td class="black">
                        <table cellspacing="1" cellpadding="0" border="0" width="370">
                            <tr>
                                <th>ABC INDUSTRIES</th>
                            </tr>
                            <tr>
                                <td class="search">

                                    <table cellpadding="5" cellspacing="0" border="0" width="100%">
                                        <tr>
                                            <td>
                                                <table cellpadding="1" cellspacing="0" border="0" width="100%">
                                                   <tr>
                                                        <td align="center" colspan="2"><hr></td>
                                                    </tr>
                                                    <tr>
                                                        <td align="right" nowrap><b><font color="FF0000">Contact Person&nbsp;<img src="/images/icon_contact.gif" align="absmiddle">&nbsp;:</font></b></td>
                                                        <td align="left" width="100%">&nbsp;Joe Smith</td>
                                                    </tr>
                                                    <tr>
                                                        <td align="right" nowrap><b><font color="FF0000">Phone Number&nbsp;<img src="/images/icon_phone.gif" align="absmiddle">&nbsp;:</font></b></td>
                                                        <td align="left" width="100%">&nbsp;555-555-5555</td>
                                                    </tr>
                                                    <tr>
                                                        <td align="right" nowrap><b><font color="FF0000">E-mail Address&nbsp;<img src="/images/icon_email.gif" align="absmiddle">&nbsp;:</font></b></td>
                                                        <td align="left" width="100%">&nbsp;<a HREF="mailto:joe@joe.com">joe@joe.com</a></td>
                                                    </tr>
                                                    more...
Run Code Online (Sandbox Code Playgroud)

屏幕上有更多代码,我需要提取不同的表结构.

Dav*_*vid 23

您是否只是在寻找有关如何实现这一目标的建议?该HTML敏捷性包很可能将是DOM一般解析你最好的选择.可能会有一些修补和试错来维持你的屏幕刮擦(通常有这种事情),但该库非常适合解析HTML.

从技术上讲,任何XML解析(甚至是原生的LINQ to XML)都应该可以解决问题,但是网站有一个不良格式的恶习,所以你可能会遇到一些小麻烦.

  • HTML Agility Pack上的+1.在尝试使用HTML敏捷包之前,我浪费了十几个小时试图在.Net中使用xml类来解析格式错误的html(即现实世界中的大多数html).得到我需要的结果在1/10的时间.希望我从一开始就了解HTML Agility. (2认同)