ProjectForStudy

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 145|ตอบกลับ: 1

[แบ่งปัน] มาโหลดโครงงาน มาอ่านกัน

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    ง่วง
    2019-6-30 15:38
  • เช็คชื่อแล้ว: 175 วัน

    [LV.7]JuniorIII

    21

    กระทู้

    179

    โพสต์

    556

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    556
    Ticket
    240
    จิตพิสัย
    316
    แก้ไขครั้งสุดท้ายโดย lamaka.tor เมื่อ 2019-4-28 00:06

    วันนี้ไปเจอโครงงานในเว็บ ของ ม. สยาม เห็นว่า มีเนื้อหาที่น่าศึกษา หลายโครงงาน เลย เขียน โค้ดสำหรับโหลดมาเก็บไว้ศึกษา ครับ
    แรกเลย คือเข้าเว็บ เขาก่อนนะครับ

    โครงงานสหกิจศึกษา

    สามารถศึกษาการเขียนโค้ดสำหรับโหลดได้ตามนี้ครับ

    มาเขียนโค้ด สำหรับโหลด โน่น โหลดนี่กัน ครับ

    ตัวนี้ ผมจะใช้ regex สำหรับ ดึงข้อมูลออกมาเป็น 2 ขั้นตอนนะครับ

    1. ดึง รายชื่อ ลิงค์ แต่ละโครงงานออกมาก่อน
    วิธีหา ลิงค์ เบื้องต้น คือ คลิก ไปซักลิงค์ก่อน

    ก๊อบ จาก Address นั่นแหละ ไปใส่ใน view-source

    ผมก็จะก๊อบ ไปใส่ใน regex hero เลย ครับ
    จะได้ regex pattern แบบนี้ิ ครับ
    1. <a href="(/co-operative/.*?)">
    คัดลอกไปที่คลิปบอร์ด

    จะสังเกตุ นะครับว่า ลิงค์ จะเริ่มจาก /co-operative ไม่ใช่ http://www.research-system.siam.edu ดังนั้น เวลาเอาไปใช้
    ต้องเพิ่ม http://www.research-system.siam.edu เข้าไปด้วย

    2. ดึง ลิงค์ ไฟล์ในโครงงาน  และ ชื่อ โครงงาน ออกมา เพื่อโหลดไปเก็บเป็นโฟลเดอร์ๆ ไป
    การหาลิงค์ก็เหมือนกับ ข้อแรก ครับ แต่ๆหลัก เราพอจะเดาได้อยู่แล้วว่าต้องค้นเป็น pdf

    ผมจะได้ประมาณนี้ครับ

    1. <a href="(/images/.*?.pdf)" target="
    คัดลอกไปที่คลิปบอร์ด

    ชื่อโครงงาน ก็ประมาณนี้ครับ

    1. <title>(.*?)</title>
    คัดลอกไปที่คลิปบอร์ด



    ความจริงแล้วถ้าเรางง กับ regex กลัวหาไม่เจอ ก็ลองค้นหาใน view-source ก่อน

    แล้ว ก็ก๊อบมาใส่ใน regex ตัดส่วนที่คิดว่าจะตัดให้เป็น .*?(ผมก็มักง่ายแบบนี้เลยละครับ ความรู้น้อย 5555)

    เอา ทั้งหมด มาเขียนเป็นโค้ด ครับ

    1. string FileName( string file)
    2.         {
    3.             string _file = file;
    4.             /*

    5.             อักขระบางตัวมีความหมายพิเศษในระบบปฏิบัติการ หลีกเลี่ยงการใช้อักขระเหล่านี้เมื่อคุณตั้งชื่อไฟล์ อักขระเหล่านี้ รวมถึงต่อไปนี้:
    6.             https://www.ibm.com/support/knowledgecenter/th/ssw_aix_71/com.ibm.aix.osdevice/filename_conv.htm
    7.              / \ " ' * ; - ? [ ] ( ) ~ ! $ { } &lt > # @ & | space tab newline
    8.              */
    9.             _file = file.Replace("/", "_").Replace(@"\", "_").Replace("'", "")
    10.                 .Replace("\"", "").Replace("*", "").Replace(":", "").Replace(";", "")
    11.                 .Replace("[", "").Replace("]", "").Replace("(", "").Replace(")", "")
    12.                 .Replace("~", "").Replace("+", "").Replace("@", "").Replace("[        DISCUZ_CODE_3        ]quot;, "")
    13.                 .Replace("%", "").Replace("^", "").Replace("฿", "").Replace("|", "")
    14.                 .Replace("{", "").Replace("}", "").Replace("?", "").Replace("<", "")
    15.                 .Replace(">", "");
    16.             return  _file ;
    17.         }

    18.         private void Form1_Load(object sender, EventArgs e)
    19.         {
    20.            // check();
    21.             new System.Threading.Thread(() =>
    22.             {
    23.                 for (int i = 0; i < 120; i +=10)
    24.                 {
    25.                       foreach (Match myMatch in new Regex(@"<a href=""(/co-operative/.*?)"">", RegexOptions.None).Matches(TorServices.NetWorkTOR.getHTML("http://www.research-system.siam.edu/co-operative?start=" + i)))
    26.                         {

    27.                             System.Threading.Thread.Sleep(500);
    28.                             // จะสังเกตุ นะครับว่า ลิงค์ จะเริ่มจาก /co-operative ไม่ใช่ http://www.research-system.siam.edu ดังนั้น เวลาเอาไปใช้ ต้องเพิ่ม http://www.research-system.siam.edu เข้าไปด้วย
    29.                   
    30.                               string html = TorServices.NetWorkTOR.getHTML("http://www.research-system.siam.edu" + myMatch.Groups[1].Value);

    31.                         //ใช้ FileName เพื่อ ลบ อักขระ แปลก ออกไป ครับ
    32.                         string title = FileName(new Regex(@"<title>(.*?)</title>", RegexOptions.None).Matches(html)[0].Groups[1].Value);


    33.                             System.IO.Directory.CreateDirectory(@"d:\load_siam_edu\" + title);

    34.                             foreach (Match _myMatch in new Regex(@"<a href=""(/images/.*?.pdf)"" target=""", RegexOptions.None).Matches(html))
    35.                             {
    36.                            
    37.                             string file = @"d:\load_siam_edu\" + title + "\\" + System.IO.Path.GetFileName(_myMatch.Groups[1].Value);
    38.                             if( !System.IO.File.Exists(file))
    39.                                 TorServices.NetWorkTOR.LoadFByWebClient(@"http://www.research-system.siam.edu" + _myMatch.Groups[1].Value,file);
    40.                                 richTextBox1.Invoke(new Action(() => richTextBox1.Text += "\n load:" + file));
    41.                             }
    42.                            
    43.                         }

    44.                     richTextBox1.Invoke(new Action(() => richTextBox1.Text += "\n load: Complete... by TOR" ));
    45.                     MessageBox.Show("Complete...  by TOR ");
    46.                 }
    47.             }).Start();




    48.         }
    คัดลอกไปที่คลิปบอร์ด


    ที่ใช้ Threading เพื่อให้ไม่สะดุด หน้าไม่ค้าง เวลา รันโปรแกรม
    เรื่อง Threading และ Lambda expressions หรือ =>operator เดี๋ยวผมจะลอง ทำตัวอย่างง่ายๆ มาให้ใช้กันนะครับ






    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    สู้
    2019-5-4 13:04
  • เช็คชื่อแล้ว: 3 วัน

    [LV.2]BeginnerI

    1

    กระทู้

    24

    โพสต์

    16

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    16
    Ticket
    4
    จิตพิสัย
    12
    KKT โพสต์ 2019-5-3 20:12:22 | ดูโพสต์ทั้งหมด
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

    รายละเอียดเครดิต

    ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|ProjectForStudy  

    GMT+7, 2019-7-21 09:06 , Processed in 0.044314 second(s), 25 queries .

    Powered by Discuz! X3.2 R20150609, Rev.38

    © 2001-2013 Comsenz Inc.

    ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้