มีหลายท่านติดต่อผ่าน ห้องติดต่อ มาหาผม เพื่อถามผมว่าจะทำ web crawler ยังไงดี???
ดูเหมือนการไปล้วงข้อมูลจากเว็บของผู้อื่น โดยให้คอมพิวเตอร์ช่วยผ่อนแรงให้ ถือเป็นความต้องการลำดับต้น ๆ ของผู้ที่อยากจะได้เนื้อหาโดยไม่ต้องออกแรงมากจริง ๆ
ผมก็เลยคิดว่าผมควรจะรวบรวมมาบอกตรงนี้เลยดีกว่า ขี้เกียจมาตอบทีล่ะคนมันเยอะ แล้วถ้าผมตอบถูกหรือผิดยังไงก็ให้พวกเราที่แอบเข้ามาอ่านกันเงียบ ๆ ที่บล็อกแห่งนี้ช่วยขัดเกลาด้วยนะ ว่ามันถูกหรือเปล่า เพราะผมเนี่ยก็ขามั่วอันดับหนึ่งในแผ่นดินเหมือนกัน
อ่ะแฮ่ม … งั้นเริ่มเลยนะ …
หากว่าท่านต้องการจะสร้างซอฟต์แวร์ประเภท web crawler นั้น สิ่งที่ท่านควรจะมีก็คือ
- ความรู้ความเข้าใจใน regular expression ยิ่งเก่งอย่างเทพได้ยิ่งดี เพราะถ้าใครเขียนได้สั้น กระทัดรัด แต่สำแดงแสนยานุภาพได้มากมาย ก็ถือว่าคนนั้นเก่ง!!! (วัดงี้เลยเหรอ?)
- ตัวแปลภาษาคอมพิวเตอร์ อาทิเช่น Haskell (ไม่รู้จักว้อย), .NET, Perl, PHP, Python, Ruby, Tcl 8.4 (ไม่รู้จักเหมือนกัน), D (มีด้วยหรือวะภาษานี้) หรือ Java ซึ่งตัวแปลภาษาคอมพิวเตอร์เหล่านี้ สนับสนุน regular expression อย่างเต็มกำลัง (สำหรับสาวก Delphi ไม่ต้องเสียใจไป เพราะมี Component ที่สนับสนุน regular expression ให้ดาวน์โหลดมากมาย)
- ความรู้ความเข้าใจในการ GET หน้าเว็บผ่าน HTTP
- จินตนาการในการตัดคำหรือประโยค ว่าจะเอาเงื่อนไขเล่ห์กลใด ๆ มาใช้ในการตัดคำถอดประโยคจาก tag html ที่แสดงอยู่ในหน้าเว็บบ้าง
- คอมพิวเตอร์ซึ่งต่อเข้ากับเครือข่ายที่ออกอินเตอร์เน็ตได้ตลอด 24 ชั่วโมง โดยไม่มีอะไรมาขัดจังหวะหรือหยุดชะงัก เพราะท่านต้องใช้คอมพิวเตอร์เครื่องดังกล่าว สำหรับสั่งให้ซอฟต์แวร์ที่ท่านเขียนขึ้น ทำงานเป็นวรรคเป็นเวรอย่างที่ท่านต้องการ
แต่ถ้าท่านขี้เกียจเขียนเอง ผมขอแนะนำให้ท่านดาวน์โหลด Heritrix: Internet Archive Web Crawler ซึ่งเป็น opensource ภาษา Java ไปลองใช้ครับ น่าจะสะดวกกว่าเยอะเลย
ป.ล. ผมกระจอกภาษา Java มากเลยครับ โดยเฉพาะถ้าต้องใช้ Java แสดงผลด้วย AWT หรือ Swing ด้วยนะ ยิ่งกลายเป็นไอ้โง่ไปเลย ดังนั้น ไม่สามารถแนะนำอะไรเกี่ยวกับ Java ได้เด้อ
[tags]web, crawler, awt, swing, java, regular, expression,คอมพิวเตอร์[/tags]
ภาษาที่เหมาะสำหรับเริ่มเขียน web crawler ผมว่าน่าจะเป็น php นะครับ ด้วยความถึกของมัน ทำให้เขียน crawler ได้ง่ายมากครับ ตรงไปตรงมา ไม่อ้อมค้อม
ผมเคยเขียนด้วย .net กับ python แล้ว รู้สึกว่า เขียนด้วย php พริ้วกว่าครับ
พี่ไทไม่ถนัด java ว่าแต่พี่ไทถนัดอะไรเหรอคับ 🙂
เออ ก็ไม่เลวเหมือนกันแฮะคุณ AMp เพราะปรกติผมจะเข้าใจอยู่เสมอว่า โปรแกรมที่ต้องทำงานแบบ realtime ตลอด 24 ชั่วโมงนั้น ควรจะสร้างเป็น desktop application ซึ่งน่าจะดีกว่า web application แต่ถ้าใช้ web application ทำงานเป็นแบบ realtime ก็ไม่เลวเหมือนกันแฮะ ทำให้มันตอบโต้ด้วย Ajax เลย ดี ๆ
ผมเขียนเป็นแค่ 2 ตัวเท่านั้นครับคุณ MrJack นั่นก็คือ Delphi และ PHP เพราะผมมีโอกาสแตะต้องภาษาคอมพิวเตอร์อื่นไม่มากนัก T-T เศร้า
โหๆ Delphi งานเยอะป่ะคับ
แต่เอ๊ะ พี่ไทรับงานอิสระหรือเปล่าน่ะ
อยู่ที่ทำงาน ผมไม่ได้เขียนโปรแกรม, ไม่ได้ทำ functional specification และไม่ได้วิเคราะห์ระบบครับคุณ MrJack งานที่ผมทำเห็นเจ้านายผมเรียกว่า งานบริหารจัดการครับ
#3 พอดีผมเคยลองเขียนด้วย .net, python อะไรแบบนี้อะครับ อยากจะลองเลียนแบบงานวิจัยต้นฉบับของ google สุดท้ายไปไม่รอดครับ ต้องเปิด thread จัดการนู่นๆ นี่ๆ อะไรสารพัด เสียเวลาเรียนรู้เยอะเหมือนกัน (เรื่องของเรื่องคือ ขี้เกียจครับ – -”)
เล่น php เลยดีกว่า เขียนเป็น single thread
ถ้าอยากได้ multi-thread ก็ไม่ยาก
แค่ request ไปที่ php หลายๆ ทีเท่านั้นแหละ
เดี๋ยว apache มันก็จัดการเรื่อง thread ให้เอง 😀
ป.ล. ถ้าขี้เกียจ request เองหลายๆ รอบ จะใช้ timer ของ .net มาทริกเรื่อยๆ ก็ได้ครับ ง่ายดีด้วย ^^
ผมเคยเขียนใช้ java กับ finite state machine อ่ะครับ generic regular expression engine คงไม่เหมาะสมเท่าไหร่อะครับ มันทำเยอะเกินที่อยากได้ มันเป็นการบ้านอันนึงทำตอนเรียนอ่ะครับ