防止Html Agility Pack更改加载的页面源

时间:2014-01-19 19:34:41

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

我在使用Html Agility Pack从网站提取数据时遇到问题。由Html Agility加载的页面源与浏览器中View Page Source菜单中的源不同。这是我的不同之处:

查看页面来源:

<td>
    <span style="color:#158EF7; font-weight:bold">
        ABCDEF
    </span>
</td>

Html Agility

返回的来源
<td>
    <font face="Arial" color="#404040" size="2">
        <span style="color:#158EF7; font-weight:bold">
            ABCDEF
        </span>
    </font>
</td>

我不知道为什么会有这么大的差异。也许是因为javascript代码或其他东西。但是我并不关心它,我只是希望获得与我从View Page Source菜单中得到的确切来源。我怎样才能做到这一点?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

在解析Google以查找网页及其位置时,我也遇到了这个问题。正如您所说的那样,我从页面源中找到了 DIFFERED 的字符串。

如果我没记错的话,您发送一个HTTP-Header,其中包含一个名为 User-Agent 的属性,请在此处阅读更多内容 - &gt; WIKIEPEDIA ABOUT USER-AGENTS。这告诉网站您的解析是什么类型的你是浏览器还是你是一个网络爬行机器人。

<强>问题
几个小时后,我看到我发送了一个空字符串,虽然它被设置为默认值,但我当时不知道。这反过来让Google相信我没有从浏览器发送HTTP-REQUEST ,而只是机械蜘蛛...... AKA网络爬虫。

<强>解决方案
尝试将您的用户代理设置为与使用相同的浏览器。这应该给你更像字符串源的字符串。
但!!!如果他们运行的脚本会根据他们编写的任何内容更改网站上的内容。这是另一个故事。

点击此处查看不同的用户代理字符串 - &gt; User-agent string list