1、网页转图像工具
2、核心源码 (适用于winform)
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Windows.Forms;
namespace Sci
{
class WebPageTool
{
/// <summary>
/// 将指定网页的内容,转化为Bitmap(支持html网页、aspx网页、vue等复杂script脚本的网页测试WebBrowser不支持)
/// </summary>
/// <param name="webUrl">待转化的网页</param>
/// <param name="delay">设置网页载入耗时,延时毫秒等待载入完成</param>
/// <param name="initWidth">设置图像的初始宽度</param>
/// <param name="initHeight">设置图像的初始高度</param>
/// <returns></returns>
public static Bitmap ToBitmap(string webUrl, int delay = 0, int initWidth = 0, int initHeight = 0, bool fullScrool = true)
{
WebBrowser browser = new WebBrowser();
// 设置浏览器的初始大小
Rectangle screen = Screen.PrimaryScreen.Bounds; // 获取当前计算机主显示器大小
browser.Width = screen.Width;
browser.Height = screen.Height;
if (initWidth > 0) browser.Width = initWidth;
if (initHeight > 0) browser.Height = initHeight;
browser.ScriptErrorsSuppressed = true; // 关闭页面脚本错误提示
long startTime = DateTime.Now.Ticks;
browser.Navigate(webUrl); // 打开指定的网页
// 延时delay毫秒等待页面载入完成
long nowTime = DateTime.Now.Ticks;
while (browser.ReadyState != WebBrowserReadyState.Complete || (nowTime - startTime) / 10000 < delay)
{
nowTime = DateTime.Now.Ticks;
Application.DoEvents();
if ((nowTime - startTime) / 10000 > delay + 3000) break; // 等待时间超出3秒,则不再等待
}
if (browser.Document == null) return null;
//Rectangle scrollRect = browser.Document.Body.ScrollRectangle; // 获取浏览器滚动区域的整体显示尺寸
Rectangle scrollRect = browser.Document.Body.ClientRectangle;
browser.Width = scrollRect.Width; // 浏览器按内容大小进行显示
if (fullScrool) browser.Height = scrollRect.Height;
else scrollRect.Height = browser.Height;
//browser.ScrollBarsEnabled = false; // 滚动条不可用
Rectangle bitmapRect = scrollRect; // 设置输出的图像尺寸
ViewObject viewObj = browser.Document.DomDocument as ViewObject; // 获取网页视图
// 创建Bitmap
Bitmap bitmap = new Bitmap(bitmapRect.Width, bitmapRect.Height);
Graphics g = Graphics.FromImage(bitmap);
IntPtr handle = g.GetHdc();
// 绘制视图至Bitmap上
viewObj.Draw(1, -1, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, handle, ref bitmapRect, ref scrollRect, IntPtr.Zero, 0);
g.ReleaseHdc(handle);
return bitmap;
}
}
[ComVisible(true), ComImport()]
[GuidAttribute("0000010d-0000-0000-C000-000000000046")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface ViewObject
{
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int Draw(
[MarshalAs(UnmanagedType.U4)] UInt32 dwDrawAspect,
int lindex,
IntPtr pvAspect,
[In] IntPtr ptd,
IntPtr hdcTargetDev,
IntPtr hdcDraw,
[MarshalAs(UnmanagedType.Struct)] ref Rectangle lprcBounds,
[MarshalAs(UnmanagedType.Struct)] ref Rectangle lprcWBounds,
IntPtr pfnContinue,
[MarshalAs(UnmanagedType.U4)] UInt32 dwContinue);
//[PreserveSig]
//int GetColorSet([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect,
// int lindex, IntPtr pvAspect, [In] IntPtr ptd,
// IntPtr hicTargetDev, [Out] IntPtr ppColorSet);
//[PreserveSig]
//int Freeze([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect,
// int lindex, IntPtr pvAspect, [Out] IntPtr pdwFreeze);
//[PreserveSig]
//int Unfreeze([In, MarshalAs(UnmanagedType.U4)] int dwFreeze);
//void SetAdvise([In, MarshalAs(UnmanagedType.U4)] int aspects,
// [In, MarshalAs(UnmanagedType.U4)] int advf,
// [In, MarshalAs(UnmanagedType.Interface)] IAdviseSink pAdvSink);
//void GetAdvise([In, Out, MarshalAs(UnmanagedType.LPArray)] int[] paspects,
// [In, Out, MarshalAs(UnmanagedType.LPArray)] int[] advf,
// [In, Out, MarshalAs(UnmanagedType.LPArray)] IAdviseSink[] pAdvSink);
}
}
3、通用插件接口(适用于.net 前端和后端)
调用示例:
Bitmap pic = Sci.WebPageTool.ToBitmap("https://www.baidu.com");
pic.Save("test2.png");
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Sci
{
/// <summary>
/// 抓取网页为图像
/// </summary>
public class WebPageTool
{
//[STAThread]
/// <summary>
/// 将指定网页的内容,转化为Bitmap(支持html网页、aspx网页、vue等复杂script脚本的网页测试WebBrowser不支持)
/// </summary>
/// <param name="webUrl">待转化的网页</param>
/// <param name="delay">设置网页载入耗时,延时毫秒等待载入完成</param>
/// <param name="initWidth">设置图像的初始宽度</param>
/// <param name="initHeight">设置图像的初始高度</param>
/// <returns></returns>
public static Bitmap ToBitmap(string webUrl, int delay = 0, int initWidth = 0, int initHeight = 0, bool fullScrool = true)
{
Bitmap pic = null;
Thread staThread = new Thread(new ThreadStart(() =>
{
// 在单线程单元中,执行网页转图片功能
pic = (Bitmap)CallStatic(ToolAsm(), "WebPage2Bitmap.WebPageTool", "ToBitmap", true, new object[] { webUrl, delay, initWidth, initHeight, fullScrool });
}));
staThread.SetApartmentState(ApartmentState.STA); // 创建一个单线程单元(否则报错:当前线程不在单线程单元中,因此无法实例化 ActiveX 控件)
staThread.Start(); // 启动线程
staThread.Join(); // 等待线程执行完成
return pic;
}
#region 工具插件
/// <summary>
/// 调用工具中的static方法
/// </summary>
/// <param name="assembly">Assembly</param>
/// <param name="args">参数</param>
/// <returns></returns>
private static object CallStatic(Assembly assembly, string classFullName, string methodName, bool IsPublic, object[] args)
{
Type type = assembly.GetType(classFullName, true, true); // 获取入口类 或 entryPoint.DeclaringType
// 调用程序集的静态方法: Type.InvokeMember
object obj = type.InvokeMember(methodName, BindingFlags.InvokeMethod | (IsPublic ? BindingFlags.Public : BindingFlags.NonPublic) | BindingFlags.Static, null, null, args);
return obj;
}
/// <summary>
/// 获取工具的Assembly
/// </summary>
/// <returns></returns>
private static Assembly ToolAsm()
{
if (asm == null)
{
byte[] data = Sci.Str2Bytes.Process(toolData);
asm = Assembly.Load(data);
}
return asm;
}
private static Assembly asm = null;
private static string toolData = "gphmlc4fc7gc6r4c4nkc14gc71kc8qdrnmcqccngclopednkcdgoopedhgikiljfecjcjeirijjeidipecifidiqiqirjgecieihecjejhiqeciliqecg3rhfecipirigiheqcpcpcmegc14hcghc4gocdcfccqpeehrigc16qc4eedcncdcnc4dkc7ic13qfic6ec7gc11dc3ec8ec5gc15gc16kc8ec13fccgckhc4dc5dc9dc5dc13dc23nofhc4grc8gc5fkcfc38ic6oc6kgfgc4doc88ec6kc23kec5gkc22eqjgihjkjgc6dgdic6ec7dkc7ec28ec5iceqjejfjeifc6fkcfc6gc8gc6dmc28gc5gceqjeihioirifc5oc8ic8ec6dqc28gc5gec32rcfhc12gkc7ec3hcckkefc4rodc6dc14pceec4nkc86dffccnccnmcdc5dc4ddccjfdfc5mcmekdgc5mirdhc5mcncidecdekdic5mirdjc5mc3idecdekdkc5mirdlc5mc3gdirqcedirqcddfcnddcnepckcicgirdjc5mc3hdirqcedirqcddfcnddcnepckcichirdlc5mc3idjirdmc5mccekdnc5mdfcodecoekdoc5mcociceirdpc5mccekdnc5mdfcodecoekdoc5mcpenficcekdnc5mdfcodecoekdoc5mcpekdqc5mc3lckhlecdcejc4imhncfecnkcnc4hkimrqcedirqcddfcnddcnepceeneec3iirdrc5mdmffdcclckhlecdcejc4imhncfimrqcgencddjccdfcnddcnepmlciirec6mdgekedc5mdirqcddfcnddcnepckdgdfcmfknnc7iirec6mireec5mirefc5mdfcgcidecgekdic5mirdjc5mc3qcgdirqcddfcnddcnepdccidecgekdkc5mirdlc5mccencqdecgciiregc5mekehc5mccddcgdfchciirec6mireic5mjhcfc5edfcidechekdic5mdechekdkc5mjfejc5mdfcjddcjekekc5mdfckddckirelc5mdfclddcidjdhjqemc5mjqemc5mjqemc5mddcldechdecgjqemc5mdiircfc5ieiddckddclirenc5mccddcjdfcmenccddcmemdqceekeoc5mememceekeoc5mc6emc6dffcceccfoc7ec4ddccjqcdc5gdgrqcddirqcdcockepeeccjecdc4jcpccgc5eekffc5mirfgc5mjffhc5mcmcikccdc5gccjqcdc5gcnenc3jemdffccdc3nc7fc4ddccjqcec5gcmenc3iemeec3ekccec5gemdffccdc3nc7gc4ddccjqcfc5gcmenc3iemhijfclc5iekfjc5mjgchc5ekccfc5gemdqceekfkc5memc14ngc6oqomqrnqcdc6ldc6iohfjljfjgihipeqheihjfirjhjeifihjfeqheihjfirjhjeifihheihidigihjeeoecipjfifirjeioilieeoechiihjejfiliriqfpfgeqfceqfceqfceoecgfjhiojgjhjeihfpiqihjhjgjeidioeoechcjhieioilifgnihjlhgirinihiqfpiefjfjidfhiffhfifdflf3gihfcfkflefhfjljfjgihipeqheihjfirjhjeifihjfeqhejhiqjgilipihheihjfirjhjeifihhfihjgcec22hcgdgghcgdgghcngc6gehfgmgecdc3dc11oc6jifgeqfceqf3cf3dflc9hccioc6lkchc4efjqc5gcic4lgcjc4efhfjgjeiliqijjfc8lkcpc4goc6efh3fccqgcpc4dc7efgjhhglggc6rgcpc5kcfc4efgeioiriec15ec5dhjfpmecdclcdc6rmehffccdic5dc6fec7hc7fc7mc6ddc6fkc7gc6dkc7hc7gc7ec7fc7gc7dc7gc7dc11mc3dc11icckc3jlc3mcclocckjc3qccofccngc3qccplccngc3iccrlccqkc3iccemcddhcdciccqmcdoncdciccrpcdoncdcicceoceoncdcicclncekdceciccoicengceciccppcengceciccrmcengceciccdlcfngceciccfecfngceciccgncfngcecicciicfngcecicckdcfngcecicclmcfoncdciccmqcfoncdciccnocfngceciccphcfngcecic3hcgrecfhrccdlcgc5iccgkcgekcgciccikcgekcgdecclncgkicgdeccmicgkicgdeccpgcgkicgciccdjchjlccdeccfnchkicgdecchcchkicgdeccjgchkicgdecclmchkicgcqccpfchngc3qccpochngc3iccrfchjlc3ic3mcioncdciccdpcioncdciccfgcioncdciccghcioncdcmccjecihmciciccklcirecfciccmiciekcgciccodcijlc3iccoicijlc3iccqmcingcecmccdicjc3jcmccercjc3jcmccgncjkjc11dc11dc3dc6dc3dpccelc3hc3dc3dccmddc5fkccelc7dc3fc6dc3gfccgpc3hc3dc3gc5ddc3ijccgpc3lc3fc3kccddc3lcdffccddccficdfjccddccjmcdhhcchcec9liccomccdfc3dccdieec8kidkpfccdpc3ic10kc3oichqfccedc3iccdqeec8kfdkpfccdpccddcceoeec8lfckgicdfnccddccjgeec8lfckhmcdgc3ddcckneec8lfckiicdghccddcclgeec8lickkmcdhlccdeccodeec8kidkpfccdpccdeccmneec8lddkggcjmeccdec7dcclqcddcdcceccmhcddcdccfccmncddcdccgccnhcddcdcchccoccdccec11eccdc3ncec5eccdkcec5fccdrcecdc3gccekcec5hccfkcec5iccghcecceccjccgpceccecckcchkcec5lccigcecceccmccjccec5dccjnceflccpfccimccglccpfccdpcchdccpfccjicchlccpfccjiccidccpfccjiccilccpfccjiccjdccpfccjiccjlccpfccjicckdccpfccjiccklccpfccjiccldccpfccjiccllccpfccjnccmdccpfccjiccmlccpfccjiccndccpfccjiccnlccpfcckc3olccpfcckiccpdccpfccdpccplccpfccdpccqdccmpcgknccqdccnrcglc3edccomcglhccqlccpocgkiccedccqicglhccqlccrdcgkiccplccrocgjnccrdccecchllccrdccekchlqccplccfechjiccrlccgjchmeccplccihchmiccplcckdchmoc3lcdkqchnec3lcdmichnoccddcdmrchlc3qlccqicglhccedccrdcgkic3lcdofchoeccdlccpfccoiccdlcdqechooccdlcdqochphccelcdrmchplccdlcdrrchpoc3lccpfccdpccfdcdpfccdpccflcdpfccencdglcdpfccdpcchdcdpfccfncdhlcdpfccdpccidcdpfccdpccilcdpkcikjcdilcdrfcilccdelccpfcclicdkdcdpfccmncdldcdhkcjdmceddccpfccdpc3kc3lccifc3kc3pccifc3kccddccifc3eccdhccikccelccnfcdnecdeqccefccinceeqccenccjrceeqccffccjrceeqcclfccqiceeqccgfccinceeqccgncckhceeqccknccppceeqccfnccjrceeqccdnccefceeqcchfccjrceeqccifccjrceeqccincclpceeqccjnccojceeqcckfccpgceglccnfcdnecdifccifccrnccifccinc3dcdifccjfcdfecdkfcckncdkecdkfcckfcdgdcdkfcclfcdkecdmfcckfcdnncdmfcclfcdkecdcpccjc4rccjeccdnccjgccdpccjgccedccjeccqdcclqcdmicddhcecgc3dc3hc3fc6rlccgnc6jecdhc7licdhqc3ec3hc3fc3ec3ic3hc3dc3jc3hc3ec3kc3jc3gkc6dc26elc7gc23dccjc12gc23dccjlc11gc23mccngc11gc23dcckicgc17dc6ihcjc14fogpirigjhioihfqcchjihiehcidijihfegeiljgipidjceqigioiocchjihiehcidijihhgiririocchjihiehcidijihfegeiljgipidjc3hiilihjjgrieimihifjgccheihjfirjhjeifihjfcchjihiehcidijihfegeiljgipidjceqhcjeirjcihjejgilihjfcchfihjgjgiliqijjfccipjfifirjeioiliecchfjljfjgihipccgrieimihifjgcchfjljfjgihipeqgfiriqi3lijjhjeidjgiliriqccgdjcjcioilifidjgiliriqhfihjgjgiliqijjfgeidjfihcchfjljfjgihipeqggjeidjjiliqijccgeiljgipidjc3hgirgeiljgipidjc3eqifjgirjeccheihifjgidiqijioihccggjeidjjcchfjljfjgihipeqheihjfirjhjeifihjfccheihjfirjhjeifihgpidiqidijihjeccjeihjfirjhjeifihgpidiqcchfjljfjgihipeqgjioirieidioiljmidjgiliriqccgfjhiojgjhjeihgliqi3rccjeihjfirjhjeifihgfjhiojgjhjeihccijihjghrheihjfirjhjeifihgpidiqidijihjeccijihjghrgfjhiojgjhjeihccjfihjghrgfjhiojgjhjeihccgfjhiojgjhjeihccigihi3djhiojggliqjfjgidiqifihccijihjghrggihi3djhiojgccggihi3djhiojgccjjihiehhjeioccigihioidjlcciliqiljghjiligjgikcciliqiljggkihilijikjgcciijhioiohfifjeiririocchfjljfjgihipeqhejhiqjgilipiheqgliqjgihjeirjchfihjejiilifihjfccgpidjejfikidiogdjfgdjgjgjeiliejhjgihcchhiqipidiqidijihighgjljcihccigjjggjeidjjgdjfjcihifjgccioiliqigihjkccjcjigdjfjcihifjgccjcjgigccgliqgdjgjgjeiliejhjgihccikigifhgidjeijihjg3ihjiccikigifggjeidjjcciojcjeifgeirjhiqigjfcciojcjeifhjgeirjhiqigjfccjci3qgfiriqjgiliqjhihccigjjgfiriqjgiliqjhihccjiidiojhihcchfjljfjgihipeqhejhiqjgilipiheqhiihjejfiliriqiliqijcchgidjeijihjggijeidipihjjirjeingdjgjgjeiliejhjgihcchfjljfjgihipeqheihi3oihifjgiliriqccgdjfjfihipieiojlhgiljgioihgdjgjgjeiliejhjgihccgdjfjfihipieiojlggihjfifjeiljcjgiliriqgdjgjgjeiliejhjgihccgdjfjfihipieiojlgfiriqi3lijjhjeidjgiliriqgdjgjgjeiliejhjgihccgdjfjfihipieiojlgfiripjcidiqjlgdjgjgjeiliejhjgihccgdjfjfihipieiojlhcjeirigjhifjggdjgjgjeiliejhjgihccgdjfjfihipieiojlgfirjcjljeilijikjggdjgjgjeiliejhjgihccgdjfjfihipieiojlhgjeidigihipidjeingdjgjgjeiliejhjgihccgdjfjfihipieiojlgfjhiojgjhjeihgdjgjgjeiliejhjgihccgfiriphiiljfilieioihgdjgjgjeiliejhjgihccgjjhiliggdjgjgjeiliejhjgihccgdjfjfihipieiojlhiihjejfiliriqgdjgjgjeiliejhjgihccgdjfjfihipieiojlgiilioihhiihjejfiliriqgdjgjgjeiliejhjgihcchfjljfjgihipeqggilidijiqirjfjgilifjfccggihiejhijijidieioihgdjgjgjeiliejhjgihccggihiejhijijiliqijgpirigihjfcchfjljfjgihipeqhejhiqjgilipiheqgfiripjcilioihjehfihjejiilifihjfccgfiripjcilioidjgiliriqheihioidjkidjgiliriqjfgdjgjgjeiliejhjgihcchejhiqjgilipihgfiripjcidjgilieilioiljgjlgdjgjgjeiliejhjgihcchfjljfjgihipeqhjiliqigirj3feqgiirjeipjfcchjihiegejeirj3fihjecchfifjeihihiqccijihjghrhcjeilipidjejlhfifjeihihiqccijihjghrgeirjhiqigjfccijihjghrhjiligjgikccgfiriqjgjeirioccjfihjghrhjiligjgikccijihjghrgkihilijikjgccjfihjghrgkihilijikjgccjfihjghrhfifjeiljcjgghjejeirjejfhfjhjcjcjeihjfjfihigccggidjgihhgilipihccijihjghrgqirjjccijihjghrhgilifinjfccgqidjiilijidjgihccgdjcjcioilifidjgiliriqccggirghjiihiqjgjfcchjihiegejeirj3fihjeheihidigjlhfjgidjgihccijihjghrheihidigjlhfjgidjgihccgkjgipioggirifjhipihiqjgccijihjghrggirifjhipihiqjgccirjchrghjdjhidioiljgjlccgkjgipioghioihipihiqjgccijihjghrgeirigjlccijihjghrgfioilihiqjgheihifjgidiqijioihccijihjghrggiripggirifjhipihiqjgccgjjeidjcikilifjfccglipidijihccgijeiripglipidijihccgjihjggkigifccgliqjghcjgjecchmihjeirccheihioihidjfihgkigifccgfiripglipjcirjejggdjgjgjeiliejhjgihccgliqjgihjei3difihhgjljcihgdjgjgjeiliejhjgihccgfiripgliqjgihjei3difihhgjljcihcchcjeihjfihjejiihhfilijgdjgjgjeiliejhjgihcchfjljfjgihipeqgfirigihggiripeqgfiripjcilioihjeccgjihiqihjeidjgihiggfirigihgdjgjgjeiliejhjgihccggihiejhijijihjegqiriqhhjfihjegfirigihgdjgjgjeiliejhjgihccgfiripjcilioihjegjihiqihjeidjgihiggdjgjgjeiliejhjgihcchgjljcihcchejhiqjgilipihhgjljcihgkidiqigioihccgjihjghgjljcihgijeiripgkidiqigioihccgdjfjfihipieiojlccijihjghrgdjfjfihipieiojlcchfjljfjgihipeqgfiripjciriqihiqjggpirigihioccghigiljgirjegejeirj3fidieioihgdjgjgjeiliejhjgihccghigiljgirjegejeirj3fidieioihhfjgidjgihcceqififjgirjecchfihjgjgiliqijjfgeidjfihcchfjliqifikjeiriqiljmihigcchjihiehcidijihfegeiljgipidjceqhcjeirjcihjejgilihjfeqheihjfirjhjeifihjfeqjeihjfirjhjeifihjfc6gjhjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc3eqcchc3jeccirccjc3ihccjeccjgccilccihccjfcceqccheccihccjfccirccjhccjeccifccihccjfc10ohedenlkpdropmglnchrrfcendegqrlkc3knjjmhohidlfgqcklckncfrhrjrddphcmfmclc3hdecpcqckckckcecfec4d3eccmckclckdkdkdkdkdcd5cd5kclcfcidedhcfcidedlcgc4dedhcgc4dedlchc3dcddedlcgckccdedhcgckccdedlcfcidedgcgc4dedgcgckccdedgcgc9dcdcheccdcd3edcdcjcdckcddncgeccdcdcqcgeccdcdcecheccdcd3idcgeccdcdckcgc4dejdcgec3d4cfec4kcgc4ddjlcfec4mcfc5dchec3ddkckdchec3dekckhclc3ecedekckhdekckhchec3dekcklcfec3docheccecdckckckc3ddekckpdekcldcfec3dkcecidkcgeccdcddkdlcjcpdeipd4cmcmd9ecodecpdekckpdkdecpceddjlchcdc3dc4elcdccegfcfcfcfcfcfdfcigepfcfcfcfcepfcfcfcfcepgffcfcfcepfcfcfcfcfcfcfcfcfcfcfgfic5ieccdcd3kcmdckcdc3dc11heccecdcqcqgccdccffhfjljfjgihipeqheihjfirjhjeifihjfeqhgiririojfeqhfjgjeiriqijiojlhgjljcihigheihjfirjhjeifihgejhilioigihjecjfgeqfceqfceqfc6gcdc7kc3ddekcnhddkcnlchec3dekcnpcjeccecdcqdekcnpcjcjcfdedhdedhcecgcjcddedlcieccdcd3kcohckcdc3ec10hlcdccgngpilifjeirjfiriijgeqhiiljfjhidiohfjgjhigilireqghigiljgirjejfeqhfihjgjgiliqijjfggihjfilijiqihjeeqhfihjgjgiliqijjfhfiliqijioihgiilioihgjihiqihjeidjgirjeckfdfdeqfceqfceqfc6gcjcddedgckc3ddekcoldekcolgjcdccdmeqgqghhggijeidipihjjirjeineohiihjejfiliriqfpjifgeqfccdcchgcqdggijeidipihjjirjeinggiljfjcioidjlgqidipihdceqgqghhgecgijeidipihjjirjeinecfgdfcdc3qhjihiehcidijihfegeiljgipidjc6hcdc8djcdccdegfirjcjljeilijikjgecoemlececfefcfeffc4elcdccegf3iigi3dfkifihepfhieiefjepfgififigepidfjflffepiffhfkffiffhfi3fcfdfkidc5ocdc3jfdeqfceqfceqfc6kcdc3jcdc9kcdc3kc10dqcdc3dcchgcedihjjeidjcgqiriqghjkifihjcjgiliriqhgikjeirj3fcdc14qpeehrigc9ec6docdc4mcfgc4mcdic4hehfgghffrfhhmhmlghhpegrngkfrmfidnecegigcdc6ihfmhoqjmkknqhnmkrhohjihiehcidijihfegeiljgipidjchohjihiehcidijihfegeiljgipidjchohjihiehcidijihfegeiljgipidjchoirieimhoggihiejhijhohjihiehcidijihfegeiljgipidjceqjcigiec354qgfhc20rqfhc6ec45rcfhc24hrgfirjeggioiogpidiliqccipjfifirjeihiheqigioioc10rrehccec3dc1014dccdc7dkc4kc30dc3dc6fc5kc30dc10gkc6hkgc5qccec20qccefgc6hicchfcchrcchiccghcchecchfccglccgrccgqcchrccglccgqccgiccgrc10npcgqrrqc5dc7dc15dc10frc15gc7ec30ggc7dcchiccidccjeccgiccilccioccihccglcciqcciiccirc10egc3gc6hgccjeccidcciqccjfccioccidccjgccilccircciqc14nccggccec5dcchfccjgccjeccilcciqccijccgiccilccioccihccglcciqcciiccirc6docec5dccfc3fc3fc3fc3fc3fgccieccfc7gkc3rc3dccgiccilccioccihccggccihccjfccifccjeccilccjc3jgccilccircciqc10hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc11fc4kc3dccgiccilccioccihcchiccihccjeccjfccilccircciqc10fdcceqccfc3eqccfc3eqccfc7gkccdfc3dccglcciqccjgccihccjecciqccidccioccgqccidccipccihc6hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc3eqccigccioccioc10gkccdec3dccgoccihccijccidccioccgfccirccjc3jlccjeccilccijccikccjgc6gfccirccjc3jlccjeccilccijccikccjgccec3mlccec3ec3feccfc3feccffc6hc3dfc3dccgrccjeccilccijccilcciqccidccioccgiccilccioccihcciqccidccipccihc6hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc3eqccigccioccioc10gc4rc3dcchc3jeccirccigccjhccifccjgccgqccidccipccihc10hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc11fgc3kc3dcchc3jeccirccigccjhccifccjgcchiccihccjeccjfccilccircciqc6fdcceqccfc3eqccfc3eqccfc7fkc3kc3dccgdccjfccjfccihccipccieccioccjlccec3hiccihccjeccjfccilccircciqc6fdcceqccfc3eqccfc3eqccfc409fc6oc6dcfic1004";
#endregion
}
}
4、aspx网页工具
示例:抓取58全页为一张图像http://scimence.cn/pages/WebPage2Bitmap.aspx?page=https://hf.58.com/&width=1000&delay=0&scroll=true
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Sci
{
/// <summary>
/// 抓取指定的网页为图像
/// 示例1:http://localhost:44923/pages/WebPage2Bitmap.aspx?page=https://www.baidu.com
/// 示例2: http://localhost:44923/pages/WebPage2Bitmap.aspx?page=http://gjzwfw.www.gov.cn/index.html&width=500&delay=4000&scroll=false
/// </summary>
public partial class WebPage2Bitmap : System.Web.UI.Page
{
string page = ""; // 待转化为图像的网页 如:https://www.baidu.com
int delay = 0; // 延时抓取(毫秒)
int width = 0; // 设置图像初始宽度
int height = 0; // 设置图像初始高度
bool scroll = true; // 是否滚动抓取整个全屏内容
protected void Page_Load(object sender, EventArgs e)
{
if (Request["page"] != null) page = Request["page"].ToString();
if (Request["delay"] != null) delay = int.Parse(Request["delay"]);
if (Request["width"] != null) width = int.Parse(Request["width"]);
if (Request["height"] != null) height = int.Parse(Request["height"]);
if (Request["scroll"] != null) scroll = bool.Parse(Request["scroll"]);
if (!page.Equals(""))
{
try
{
Bitmap pic = Sci.WebPageTool.ToBitmap(page, delay, width, height, scroll); // 抓取网页为图像
System.IO.MemoryStream stream = new System.IO.MemoryStream(); // 创建支持存储区的内存流
pic.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); // 保存图片
Response.ClearContent(); // 清空缓冲区
Response.ContentType = "Image/jpeg"; // 以图像形式输出
//Response.AddHeader("Content-Disposition", (isDownload ? "attachment; " : "") + "filename=" + HttpUtility.UrlEncode(reName, System.Text.Encoding.UTF8));
Response.BinaryWrite(stream.ToArray()); // 将流内容输出至Response接收端
}
catch (Exception ex) { }
}
Response.Write("");
}
}
}