يتم عرض الوظائف المراد تنفيذها في الصورة التالية. التفاصيل المحددة هي كما يلي:
الآن سأقدم بعض الوظائف الأخرى للبرنامج. أتمنى أن يستفيد الجميع.
منتجات البحث محاكاة
عند تنظيف الطلبات بالفرشاة ، لا يمكنك الحصول على عنوان URL للمنتج مباشرة وإدخال صفحة الشراء. عليك محاكاة بحث اصطناعي.
هناك صعدون في هذه العملية:
1) التحميل غير المتزامن لقائمة المنتجات ؛ 2) قلب الصفحات وأخذ لقطات الشاشة ؛
في الحديقة ، لم أعد ألعب بسيف كبير أمام جوان غونغ.
قم بتحميل رمز المفتاح مباشرة:
أنا: ابحث عن المنتجات وتحويل الصفحات
منطقي عام؟ SearchProduct (TaskDetailModel TaskDetaildata) {bool؟ النتيجة = null ؛ bool isIndex = true ؛ bool iSlist = true ؛ webrowsertask.instance.setProperties () ؛ webbrowsertask.instance.cleardocumentcompleted () ؛ webbrowertask.instance.documentcompleted += wbsendersearch ، wbesearch) => system.windows.forms.webbrowser ؛ system.windows.forms.htmldocument currentDoc = currentwb.document ؛ mshtml.htmldocument currentdom = currentdoc.domdocument as mshtml.htmldocument ؛ string wburl = wbesearch.url.toString () ؛ system.windows.forms.webBrowSerreadyState.complete) {#region home search if (wburl.contains ("www.taobao.com")) {if (isIndex == True) TaskDetaildata.taskName) ؛ func <Oool> func = () => {bool asynctag = false ؛ system.throading.thread.sleep (5000) ؛ asynctag = true ؛ (asyncresult) {system.windows.forms.htmlelement hee = currentdoc.getElementById ("j_searchtab") ؛ string className = hee.getAtTribute ("className") ؛ system.windows.forms.htmlelement hitem = hee.children [0] hitem.children ؛ system.windows.forms.htmlelement li1 = heclis [0] ؛ system.windows.forms.htmlelement li2 = heclis [1] ؛ system.windows.forms.htmlelement li3 = heclis [2] ؛ li.getAttribute ("className") ؛ if (liclass.contains ("select")) {system.windows.forms.htmlelement null && btnsearch! = null) {q.focus () ؛ q.setattribute ("value" ، taskDetailData.taskName) ؛ btnsearch.focus () "")) ؛ captureImage.captureWebPageArea (currentdom ، savepath) ؛ btnsearch.invokemmember ("انقر") ؛}}}}}} ، null) ؛}} func = () => {bool asynctag = false ؛ asynctag = true ؛ إرجاع asynctag ؛} ؛ funC.BeginInvoke ((ar) => {bool asyncresult = funC.endInvoke (ar) ؛ if (asyncresult) {// enalze per clickproducturl = currentAndPate. true ؛}} ، null) ؛}}#endregion قائمة منتج}}} ؛ // documentCompleted End System.windows.application.current.dispatcher.invoke (new System.Action (() => {WebBrowSertask.instance.navigate ("https://www.taobao.com/") ؛}) ؛ (النتيجة! = خالية) {break ؛}} نتيجة الإرجاع ؛} II: نظرًا لأن كل صفحة يتم تحميلها بشكل غير طبيعي ، فاختر الوقت المناسب لالتقاط لقطة شاشة لصفحة الويب والتقاط صفحة الويب بأكملها:
/*لأنه يتم تضمين عنصر التحكم ، إذا تم استدعاؤه في الموضوع ، فيجب استخدام طريقة الاستدعاء مع system.windows.application.current.dispatcher.invoke (نظام جديد. string.format (@"d:/{0} .jpg" ، guid.newguid (). <param name = "web"> </param> /// <param name = "savePath"> </param> public static void capturewebpage (system.windows.forms.webbrowser web ، string savepath) {rectangle body = new. body.height)} ؛ web.dock = dockstyle.none ؛ web.width = docrectangle.width ؛ web.height = docrectangle.height ؛ rectangle imgrectangle = docrectangle ؛ باستخدام (bitmap bitmap = new bitmap (imgrectangle.width ، imgrectangle.height)) {iviewObject ivo = web.document.domdocument as iviewobject ؛ باستخدام (الرسومات g = graphics.fromage (bitmap)) {intptr hdc = g.gethdc () ؛ intptr.zero ، intptr.zero ، hdc ، ref imgrectangle ، ref doCrectangle ، intptr.zero ، 0) ؛ التقط منطقة معينة من صفحة الويب:
/// <summary> /// intercept part of the web page /// </summary> /// <param name = "htmldom"> </param> /// <param name = "savepath"> </param> public static void capturewebpagearea (mshtml.htmldocument htmldom) System.io.path.getDirectoryName (SavePath) ؛ if (! system.io.directory.exists (SaveDir)) {system.io.directory.createdirectory (SaveDir) ؛} strenge doccrectangle = new strenge () {location = new point (0 ، 0) ، // size = htmldom.body.offsetheight) الحجم = size size (int) system.windows.systemparameters.primaryScreenWidth ، (int) system.windows.systemparameters.primaryScreenheight)} باستخدام (bitmap bitmap = new bitmap (imgrectangle.width ، imgrectangle.height)) {iviewObject ivo = htmldom as iviewject ؛ باستخدام (الرسومات g = graphics.fromage (bitmap)) {intptr hdc = g.gethdc () intptr.zero ، intptr.zero ، hdc ، ref imgrectangle ، ref doCrectangle ، intptr.zero ، 0) ؛ هناك العديد من المقتطفات المثيرة للاهتمام في هذا الرمز. سوف يكتشف الأصدقاء المهتمين.