Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > บทความจากสมาชิก > C# มา โหลด โน่น โหลดนี่กันเถอะ (โปรแกรมดาวน์โหลดด้วย C#)



 
Clound SSD Virtual Server

C# มา โหลด โน่น โหลดนี่กันเถอะ (โปรแกรมดาวน์โหลดด้วย C#)

C# มา โหลด โน่น โหลดนี่กันเถอะ ผมเองเป็นคนชอบโหลบ ทั้ง หนัง เพลง การ์ตูนต่างๆ ดังนั้น ผมจึงมักที่จะเขียนโค้ดสำหรับไว้โหลด โน่น โหลดนี่เสมอ โดยใช้หลักการของ System.Text.RegularExpressions

วันนี้จะมาอธิบายโค้ด ง่ายๆ สำหรับนักโหลด ครับ
ไฟล์ที่ต้องใช้

1.https://mega.nz/#!YF53lapT!fmjfm4v4taJ83hvJC6vBS1SdmM5o2LezKV3gqth2yiQ
2.http://regexhero.net/tester/
3. เว็บสำหรับที่ต้องการโหลด

ควรมีพื้นฐาน Regular Expressions ซักหน่อยก็ดีนะครับจะช่วยได้เยอะ ก็อ่านมันจาก regex hero นี่แหละครับ เอาพอถูๆไถๆไปก่อน
ซึ่งถ้าฝึก regex บ่อยๆจะช่วยได้มากกว่า string เยอะครับ
ยิ่งถ้าผนวกกับ ienumerable ได้ก็ยิ่งช่วยได้เยอะ

ตัวอย่างจะเป็น เว็บ
https://www.iconfinder.com/
สำหรับโหลดรูป นะครับ

เบื้องต้นผมจะลองค้นแบบปกติก่อน
https://www.iconfinder.com/search/?q=C#&price=free


เพื่อค้นหาคำว่า C# และ ค้นรูป free ด้วย นะครับ
1

หามุมว่างๆ คลิกขวาเลือก view page source เพื่อดูโค้ด html

2

โค้ดก็ประมาณนี้ครับ

http://view-source:https://www.iconfinder.com/search/?q=C#&price=free

3

ทีนี้ก็เปิด regex hero ขึ้นมา จากนั้นก็ก๊อบทั้งหมดของ html ไปใส่ครับ

4


ความมันส์ มันเริ่มจากตรงนี้ครับ
เพราะ เราจะต้อง หา Regular pattern เพื่อดึง ลิงค์ที่ต้องการออกมา

สามารถศึกษา Regular pattern ได้ใน
https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference


ผมจะดึงไฟล์ .png ออกมานะครับ
ผมลองใส่ (https://.*?\.png)

5

สรุป ว่า เราได้ลิงค์มาแล้วนะครับ(ง๊ายง่าย)
ถ้ายังไม่ได้ก็เล่น regex ไปเรื่อยๆ จนกว่าจะได้ตามชอบใจละครับ
แต่ผมก็มักคิดง่ายๆ ถ้าจะโหลด ไฟล์ png ก็แค่ ใส่(*.?\.png)

อธิบายตามความรู้หางอึ่งของผมนะครับ
() คือการสร้าง group ขึ้นมา เพราะเวลาเรียกไปใช้ เราจะเรียกไปเป็น callection ที่ชื่อว่า MatchCollection
แล้วมันก็จะเรียกเป็น group[]

*.? ก็คือ อักขระ อะไรก็ได้ จะเป็นตัวหนังสือ ตัวเลขสัญลักษณ์ ได้หมด

\.png . เป็นเงื่อนไขใน Regular pattern หมายถึงอะไรก็ได้ แต่ถ้าเราจะใช้มัน หรืออะไรที่เป็นเงื่อนไข หรือ อักขระเงื่อนไขใน Regular pattern แล้ว เราจะต้อง เพิ่ม \ ข้างหน้า เช่น เราจะใช้ () ถ้าเราจะพิมพ์แค่() Regular มันจะแบ่ง group ให้เราดังนั้เราต้องพิมพ์ว่า \(\) เพื่อที่จะหาค่า () นั่นเอง

ในกรณีที่อยากค้นทั้งไฟล์ .png และ .jpg ก็ต้องใช้แบบนี้ครับ
\.[pngj]{3,}

[pngj] คือดูค่าใน [] ซึ่งก็คือ pngj และ {} เป็นการบอกจำนวน ซึ่ง {3,} หมายถึง อย่างน้อย 3 จำนวน
เช่น png pgn npg jpg ....
{} ผมมีหลักการใช้ง่ายๆคือ
{n,} > จำนวน n ขึ้นไป
{n,m} > จำนวน n ถึง m

เช่น [pngje]{3,4} มันจะคลุมทั้ง .jpg(3 ตัว) และ .jpeg(4 ตัว)

เรื่องนี้ มั่วๆไปเดียวก็ชินไปเองครับ ผมก็งูๆปลาๆ ไปเหมือนกัน

พอเราเล่นกับ regexจนสาแก่ใจแล้ว เราก็ คลิกที่ .net เพื่อดูโค้ด
ผมลบ target string ออกไป เพื่อให้เห็นโค้ดชัดเจนขึ้นครับ

6

หลักๆที่เราได้คือ
Code (C#)
string strRegex = @"(https://.*?\.png)";
//คือ pattern หรือ รูปแบบ สำหรับ Regex
Regex myRegex = new Regex(strRegex, RegexOptions.None);
เป็นการเรียกใช้ Regex 
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    // Add your code here
  }
}



เป็น for loop สำหรับ ดึงข้อมูลออกมาใช้ครับ
จะเขียนโค้ด สั้นๆ แบบนี้ก็ได้
Code (C#)
foreach (Match myMatch in new Regex(@"(https://.*?\.png)", RegexOptions.None).Matches(strTargetString))
{
 
}


ในกรณีความจุน้อยๆแบบนี้ เราสามารถ WebClient ในการโหลดได้ครับ
Code (C#)
public static void LoadFByWebClient(string link, string file)
        {
            using (WebClient webClient = new WebClient())
            {
               		 try
                {
                    webClient.DownloadFileAsync(new Uri(link), file);
                    System.Threading.Thread.Sleep(100);
                }
                		catch { }

            }
        }


แต่ถ้าเยอะๆ ควรใช้ IDM จะเหมาะกว่า(เกินซัก 10 mb ขึ้นไป)
Code (C#)
public static void LoadByIDM(string link, string file)
        {
            string IDMpath = Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Software\DownloadManager", "ExePath", true).ToString();

            System.Diagnostics.Process.Start(IDMpath, "/a /n /d " + link + "  /f \"" + file + "\"");
            System.Threading.Thread.Sleep(500);
        }



เมื่อเราได้ for loop มาแล้ว ก็โหลดเลยครับ

Code (C#)
foreach (Match myMatch in new Regex(@"(https://.*?\.png)", RegexOptions.None).Matches(strTargetString))
{
   LoadFByWebClient(myMatch.Groups[1].Value,@“C:\_load\” + System.IO.Path.GetFileName(_myMatch.Groups[1].Value));
}
ยังไม่จบครับ เรายังต้องทำให้ง่ายโดยการแปลงจาก url ให้เป็น โค้ดhtml ซะก่อน
public static string getHTML(string url)
        {
            string html = "";
            try
            {
                System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url.Trim());
                System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
                System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream());
                html = sr.ReadToEnd();
                sr.Close();
                response.Close();
            }
            catch { }
            return html;
        }


ดังนั้นโค้ดมันก็จะประมาณนี้ครับ

Code (C#)
string html = TorServices.NetWorkTOR.getHTML("https://www.iconfinder.com/search/?q=C#&price=free");
//แปลงจาก url ให้เป็น html

            foreach (Match myMatch in new Regex(@"(https://.*?\.png)", RegexOptions.None).Matches(html))
            {
                LoadFByWebClient(myMatch.Groups[1].Value,@"C:\_load\" +System.IO.Path.GetFileName(myMatch.Groups[1].Value));
            }






แทนที่เราจะค้นแค่ C# อย่างเดียว เราก็ทำให้มันค้นได้หลายๆคำ โดยใช้ list<> และ ForEach
แบบนี้

Code (C#)
new List<string>() { "C#", "lab", "Chemistry", "test", "metal","lern","book","man","animal","food" }
            .ForEach(cri =>
            {
                string html = TorServices.NetWorkTOR.getHTML("https://www.iconfinder.com/search/?q=" +cri+ "&price=free");
                foreach (Match myMatch in new Regex(@"(https://.*?\.png)", RegexOptions.None).Matches(html))
                {
                    TorServices.NetWorkTOR.LoadFByWebClient(myMatch.Groups[1].Value,@"C:\_load\" +System.IO.Path.GetFileName(myMatch.Groups[1].Value));
                }
            });







   
Share
Bookmark.   

  By : TOR_CHEMISTRY
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2019-04-23
  Download : No files
Sponsored Links
ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่