繁体   English   中英

如何在我的程序中从网站上获取图片?

[英]How can I get a picture from the site in my program?

下午好。 有一个网站在这里托管公告我需要在页面上获得任何公告的电话号码,例如这里电话号码表示为图片。 我想获得图片的链接并保存这张图片并识别出这张照片。 但是当我开始在程序中获得图片的链接时,我看到这张图片生成了java脚本。 这是我试图在程序中获取图片链接的代码:

.....
HtmlNode bodyNode7 = doc.DocumentNode.SelectSingleNode(@".//*//table[6][@class='objectView']//tr[2]//td");
Console.WriteLine(bodyNode7.InnerText.ToString());
.....

我使用HtmlAgilityPack库(C#)来解析图片链接。 我打开了这个页面的源代码( 这里 ),看到生成图片的Javascript:

<tr id="ctl00_cphBody_FlatSell_Obj_adapterObject_trPhones" style="background-color: white">
        <th>Телефоны:</th>
        <td>
                    <script language="javascript" type="text/javascript">document.write(decs("0x88e36b6d468b03acca9737a99ba0fffe05cb3a53de8858b798194826c94719e2193434b3377d69745a1a28879291ecfd69c703de931ac8f551fe22229ef49160"));</script>
        </td>
</tr>

在javascript中使用函数decs()来生成图片。 这是代码:

function decs(a){
return deco(key,hexToString(a),0,1,iv)
};

如果我理解正确,此功能创建了一个带有电话号码的图片的链接,或者此功能创建了这张图片。 在这种情况下,该函数使用参数“key”。 如何创建这个参数,我不知道。

问题:如何通过电话号码获取此图片的链接,或者在我的程序中使用电话号码下载此图片?

你有几个选择。 一种是使用像OpenWebkitSharp这样的库来托管.NET应用程序中的Webkit实例,您可以使用它来执行页面上的任何脚本,然后检查生成的DOM以提取图像。 该图书馆位于: http//code.google.com/p/open-webkit-sharp/

但是,在您的应用程序中托管webkit意味着它需要一段时间才能加载并消耗大量内存。 你需要经常修补它几乎每周都会发布webkit的更新。

假设页面的HTML和Javascript保持不变,另一个选择是使用正则表达式提取功能,然后自己进行转换。

你会有一个正则表达式找到“ decs( ”文本并在之后提取十六进制编码的文本,然后你将它提供给你自己的decs函数的实现,这应该很容易做到。

HTH。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM