กระโดดไปยังแผงนำทาง

เคล็ดลับการสร้าง web crawler 23 June 2008 5:57 pm

บันทึกโดย Mr. PeeTai ใน : การสร้างซอฟต์แวร์ , ตรวจย้อนกลับ

มีหลายท่านติดต่อผ่าน ห้องติดต่อ มาหาผม เพื่อถามผมว่าจะทำ web crawler ยังไงดี???

ดูเหมือนการไปล้วงข้อมูลจากเว็บของผู้อื่น โดยให้คอมพิวเตอร์ช่วยผ่อนแรงให้ ถือเป็นความต้องการลำดับต้น ๆ ของผู้ที่อยากจะได้เนื้อหาโดยไม่ต้องออกแรงมากจริง ๆ

ผมก็เลยคิดว่าผมควรจะรวบรวมมาบอกตรงนี้เลยดีกว่า ขี้เกียจมาตอบทีล่ะคนมันเยอะ แล้วถ้าผมตอบถูกหรือผิดยังไงก็ให้พวกเราที่แอบเข้ามาอ่านกันเงียบ ๆ ที่บล็อกแห่งนี้ช่วยขัดเกลาด้วยนะ ว่ามันถูกหรือเปล่า เพราะผมเนี่ยก็ขามั่วอันดับหนึ่งในแผ่นดินเหมือนกัน

อ่ะแฮ่ม … งั้นเริ่มเลยนะ …

หากว่าท่านต้องการจะสร้างซอฟต์แวร์ประเภท web crawler นั้น สิ่งที่ท่านควรจะมีก็คือ

  1. ความรู้ความเข้าใจใน regular expression ยิ่งเก่งอย่างเทพได้ยิ่งดี เพราะถ้าใครเขียนได้สั้น กระทัดรัด แต่สำแดงแสนยานุภาพได้มากมาย ก็ถือว่าคนนั้นเก่ง!!! (วัดงี้เลยเหรอ?)
  2. ตัวแปลภาษาคอมพิวเตอร์ อาทิเช่น Haskell (ไม่รู้จักว้อย), .NET, Perl, PHP, Python, Ruby, Tcl 8.4 (ไม่รู้จักเหมือนกัน), D (มีด้วยหรือวะภาษานี้) หรือ Java ซึ่งตัวแปลภาษาคอมพิวเตอร์เหล่านี้ สนับสนุน regular expression อย่างเต็มกำลัง (สำหรับสาวก Delphi ไม่ต้องเสียใจไป เพราะมี Component ที่สนับสนุน regular expression ให้ดาวน์โหลดมากมาย)
  3. ความรู้ความเข้าใจในการ GET หน้าเว็บผ่าน HTTP
  4. จินตนาการในการตัดคำหรือประโยค ว่าจะเอาเงื่อนไขเล่ห์กลใด ๆ มาใช้ในการตัดคำถอดประโยคจาก tag html ที่แสดงอยู่ในหน้าเว็บบ้าง
  5. คอมพิวเตอร์ซึ่งต่อเข้ากับเครือข่ายที่ออกอินเทอร์เน็ตได้ตลอด 24 ชั่วโมง โดยไม่มีอะไรมาขัดจังหวะหรือหยุดชะงัก เพราะท่านต้องใช้คอมพิวเตอร์เครื่องดังกล่าว สำหรับสั่งให้ซอฟต์แวร์ที่ท่านเขียนขึ้น ทำงานเป็นวรรคเป็นเวรอย่างที่ท่านต้องการ

แต่ถ้าท่านขี้เกียจเขียนเอง ผมขอแนะนำให้ท่านดาวน์โหลด Heritrix: Internet Archive Web Crawler ซึ่งเป็น opensource ภาษา Java ไปลองใช้ครับ น่าจะสะดวกกว่าเยอะเลย

ป.ล. ผมกระจอกภาษา Java มากเลยครับ โดยเฉพาะถ้าต้องใช้ Java แสดงผลด้วย AWT หรือ Swing ด้วยนะ ยิ่งกลายเป็นไอ้โง่ไปเลย ดังนั้น ไม่สามารถแนะนำอะไรเกี่ยวกับ Java ได้เด้อ

Technorati Tags: , , , , , , ,

ความคิดเห็น»

1. AMp - 23 June 2008

ภาษาที่เหมาะสำหรับเริ่มเขียน web crawler ผมว่าน่าจะเป็น php นะครับ ด้วยความถึกของมัน ทำให้เขียน crawler ได้ง่ายมากครับ ตรงไปตรงมา ไม่อ้อมค้อม

ผมเคยเขียนด้วย .net กับ python แล้ว รู้สึกว่า เขียนด้วย php พริ้วกว่าครับ

2. MrJack - 24 June 2008

พี่ไทไม่ถนัด java ว่าแต่พี่ไทถนัดอะไรเหรอคับ :)

3. Mr. PeeTai - 24 June 2008

เออ ก็ไม่เลวเหมือนกันแฮะคุณ AMp เพราะปรกติผมจะเข้าใจอยู่เสมอว่า โปรแกรมที่ต้องทำงานแบบ realtime ตลอด 24 ชั่วโมงนั้น ควรจะสร้างเป็น desktop application ซึ่งน่าจะดีกว่า web application แต่ถ้าใช้ web application ทำงานเป็นแบบ realtime ก็ไม่เลวเหมือนกันแฮะ ทำให้มันตอบโต้ด้วย Ajax เลย ดี ๆ

ผมเขียนเป็นแค่ 2 ตัวเท่านั้นครับคุณ MrJack นั่นก็คือ Delphi และ PHP เพราะผมมีโอกาสแตะต้องภาษาคอมพิวเตอร์อื่นไม่มากนัก T-T เศร้า

4. MrJack - 24 June 2008

โหๆ Delphi งานเยอะป่ะคับ
แต่เอ๊ะ พี่ไทรับงานอิสระหรือเปล่าน่ะ

5. Mr. PeeTai - 24 June 2008

อยู่ที่ทำงาน ผมไม่ได้เขียนโปรแกรม, ไม่ได้ทำ functional specification และไม่ได้วิเคราะห์ระบบครับคุณ MrJack งานที่ผมทำเห็นเจ้านายผมเรียกว่า งานบริหารจัดการครับ

6. AMp - 24 June 2008

#3 พอดีผมเคยลองเขียนด้วย .net, python อะไรแบบนี้อะครับ อยากจะลองเลียนแบบงานวิจัยต้นฉบับของ google สุดท้ายไปไม่รอดครับ ต้องเปิด thread จัดการนู่นๆ นี่ๆ อะไรสารพัด เสียเวลาเรียนรู้เยอะเหมือนกัน (เรื่องของเรื่องคือ ขี้เกียจครับ - -'’)

เล่น php เลยดีกว่า เขียนเป็น single thread
ถ้าอยากได้ multi-thread ก็ไม่ยาก
แค่ request ไปที่ php หลายๆ ทีเท่านั้นแหละ
เดี๋ยว apache มันก็จัดการเรื่อง thread ให้เอง :D

ป.ล. ถ้าขี้เกียจ request เองหลายๆ รอบ จะใช้ timer ของ .net มาทริกเรื่อยๆ ก็ได้ครับ ง่ายดีด้วย ^^

7. Tee - 27 June 2008

ผมเคยเขียนใช้ java กับ finite state machine อ่ะครับ generic regular expression engine คงไม่เหมาะสมเท่าไหร่อะครับ มันทำเยอะเกินที่อยากได้ มันเป็นการบ้านอันนึงทำตอนเรียนอ่ะครับ


*
เพื่อพิสูจน์ว่าคุณเป็นมนุษย์ (ไม่ใช่หุ่นยนต์) ดังนั้น กรุณาใส่รหัสป้องกันซึ่งแสดงอยู่ด้านล่างด้วยครับ
Anti-Spam Image