การพัฒนา web crawler ขั้นพื้นฐาน ด้วย crawler4j

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
E-COMMERCE WEBSITE Smartzap Co., Ltd.. Company Profile บริษัท สมาร์ทแซป จำกัด ก่อตั้งเมื่อปี 2543 (13 ปี ) ในช่วงยุค Internet เพิ่ง เริ่มต้น เป็นบริษัทที่ดำเนินงานทางด้าน.
Advertisements

โครงสร้างโปรแกรมภาษา JAVA
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
The InetAddress Class.
Lab Part Nattee Niparnan
การจัดการความผิดพลาด
Object-Oriented Programming IUP02 At Exceep camp.
Stack.
แถวคอย (Queue).
Location object Form object
05_3_Constructor.
ASP:ACCESS Database.
Network programming Asst. Prof. Dr. Choopan Rattanapoka
การสืบทอด (Inheritance)
Asst.Prof. Dr.Surasak Mungsing
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
บทที่ 4 Method (1).
ขั้นตอนการดาวน์โหลดวิดีโอจาก youtube.com โดยใช้โปรแกรม youripper 1. ไปที่เว็บ คลิ๊กที่ Server.
Dynamic Link Library (DLL)
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
อาร์เรย์ หรือแถวลำดับ (Array)
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
Algorithm มหาวิทยาลัยเนชั่น Java Pre-Test 49 (Series 1, 2 )
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 6 มิถุนายน 2556 Exception มหาวิทยาลัยเนชั่น
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 JAR (Java Archive) มหาวิทยาลัยเนชั่น.
Page: 1 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้ ผศ. บุรินทร์ รุจจน พันธุ์.. ปรับปรุง 19 ตุลาคม 2555 Introduction to Batch.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 7 มิถุนายน 2556 Text File Processing มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
1 หลักการภาษาชุดคำสั่ง อ. บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 9 มิถุนายน 2556 Transition & Parse Tree มหาวิทยาลัยเนชั่น.
Avira Antivirus ปรับปรุง 17 เมษายน 2557
JAVA PROGRAMMING PART IV.
โครงสร้างควบคุมการทำงาน
Java Programming Language สาขาวิชาระบบสารสนเทศ คณะบริหารธุรกิจ มหาวิทยาลัยเทคโนโลยีราชมงคลกรุงเทพ.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
Thread Thread ส่วนของ process ที่ให้ CPU ประมวลผล.
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
The ServerSocket Class ใช้ในการจัดทำเครื่องที่เป็นการบริการ ใช้ในการจัดทำเครื่องที่เป็นการบริการ โดยจะมี ช่วงชีวิตดังนี้ โดยจะมี ช่วงชีวิตดังนี้
Method of Class อ.สุพจน์ สิงหัษฐิต
การเขียนโปรแกรม JAVA ขั้นพื้นฐาน
Nattapong Songneam BankAccount – Example Nattapong Songneam
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
Java collection framework
Java Programming Java Structure and Datatype,Variable
 Mr.Nitirat Tanthavech.  HTML forms are used to pass data to a server.  A form can contain input elements like text fields, checkboxes, radio-buttons,
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
การจัดการกับความผิดปกติ
JQUERY. jQuery คือ JavaScript Platform หรือ JavaScript Library Library ที่ถูกเขียนขึ้นจาก JavaScript เพื่อลดขั้นตอนสนองการพัฒนา เว็บไซต์ในรูปแบบใหม่ การโต้ตอบกับ.
Static Libraries ธวัชชัย เอี่ยมไพโรจน์. Static Libraries It is the simplest form of library. It is a collection of object files kept together in a ready-to-use.
PHP FRAMEWORK – Web Programming and Web Database Asst. Prof. Dr. Choopan Rattanapoka.
Timed Math Quiz. โปรแกรมสุ่มคำนวณเลขแข่งกับ เวลา.
Bootstrap Dr. Thanuwong Chaksupa.
Mobile Application Development
Package การสร้าง Package การใช้งาน Package อ.ธวัฒน์ชัย.
Introduction to VB2010 EXPRESS
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
ประภาศรี ฟุ้งศรีวิโรจน์ แผนกสนับสนุนฝ่ายทรัพยากร
อาจารย์ชนิดา เรืองศิริวัฒนกุล หลักสูตรสาขาวิชาเทคโนโลยีสารสนเทศ
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
JSON API Pentaho User Manual.
Java Translation Object and Class ในมุมมองคอมพิวเตอร์ Objects หรือ Instances หมายถึงวัตถุที่กำเนิดตัวตนจริงๆจากต้นแบบที่กำหนดโดยคลาส Object.
Picture Viewer.
เจาะลึก google หลักการทำงานของ search engine
Data Structures and Algorithms 2/2561
โครงการสัมมนาเชิงปฏิบัติการบูรณาการภาครัฐและเอกชนในการจัดยุทธศาสตร์เศรษฐกิจภาคตะวันออก This template can be used as a starter file to give updates for.
ใบสำเนางานนำเสนอ:

การพัฒนา web crawler ขั้นพื้นฐาน ด้วย crawler4j

เครื่องมือที่ใช้พัฒนา Eclipse IDE Java SDK Library “crawler4j” download >> “ https://code.google.com/p/crawler4j/ ”

การทำงานของ web crawler

การทำงานของ web crawler ขั้นแรกจะเป็นกระบวนการที่ใช้ในการเก็บ URL ของเว็บเพจ (Intialize Frontier) ใช้การค้นหาข้อมูลแนวกว้าง (Breadth First Search) ใช้คิวแบบเข้าก่อนออกก่อน (First In First Out : FIFO) หาข้อมูลโดยใช้เส้นทางในการค้นหาที่สั้นที่สุด (Shortest Paths) ขั้นตอนในการดึง URL (Dequeue) ไปให้ส่วนที่ทำหน้าที่ร้องขอหรือ ดาวน์โหลดเว็บเพจ (Fetch Page)

การทำงานของ web crawler ทำการสกัด URL (Extract URLs) จากเว็บเพจที่ถูกดึงมาแล้วว่ามี URL ที่ต้องทำงานต่ออีกหรือไม่ เป็นการหาความลึกของลิงค์ (Link Depth) หากมีจะทำการบันทึก URL นั้นลงในฐานข้อมูล วนไปเริ่มกระบวนการใหม่จนกว่าจะไม่มีลิงค์ URL จึงจะเสร็จสิ้น กระบวนการ

Step 1 Download the latest crawler4j-x.x.zip file (contains crawler4j-x.x.jar) zip file also contains a log4j.properties file that you'll need later to properly create a log4j appender. download >> “ https://code.google.com/p/crawler4j/ ”

Step 2 In Eclipse, create a new project, such as WebcrawlerTest. Right click on your new web crawler project and select the Build Path option. Select the “Add External Archives” option and select ALL of the jar files that you extracted from the zip files.

Step 3 Create a Java class name “BasicCrawler” import edu.uci.ics.crawler4j.crawler.Page; import edu.uci.ics.crawler4j.crawler.WebCrawler; import edu.uci.ics.crawler4j.parser.HtmlParseData; import edu.uci.ics.crawler4j.url.WebURL; import java.util.Set; import java.util.regex.Pattern; import org.apache.http.Header; public class BasicCrawler extends WebCrawler { private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|bmp|gif|jpe?g" + "|png|tiff?|mid|mp2|mp3|mp4"+ "|wav|avi|mov|mpeg|ram|m4v|pdf" + "|rm|smil|wmv|swf|wma|zip|rar|gz))$"); }

Step 3 Create method name “shouldVisit” Implement this function to specify whether the given url . It should be crawled or not (based on crawling logic). public boolean shouldVisit(Page page, WebURL url) {     String href = url.getURL().toLowerCase();     return !FILTERS.matcher(href).matches() && href.startsWith("http://");   }

Step 3 Create method name “visit” This function is called when a page is fetched and ready to be processed by your program. public void visit(Page page) {     int docid = page.getWebURL().getDocid();     String url = page.getWebURL().getURL();     String domain = page.getWebURL().getDomain();     String path = page.getWebURL().getPath();     String subDomain = page.getWebURL().getSubDomain();     String parentUrl = page.getWebURL().getParentUrl();     String anchor = page.getWebURL().getAnchor();  // continue next page >>>

Step 3 System.out.println("Docid: " + docid);     System.out.println("URL: " + url);     System.out.println("Domain: '" + domain + "'");     System.out.println("Sub-domain: '" + subDomain + "'");     System.out.println("Path: '" + path + "'");     System.out.println("Parent page: " + parentUrl);     System.out.println("Anchor text: " + anchor);     if (page.getParseData() instanceof HtmlParseData) {       HtmlParseData htmlParseData = (HtmlParseData) page.getParseData();       String text = htmlParseData.getText();       String html = htmlParseData.getHtml();       List<WebURL> links = htmlParseData.getOutgoingUrls();       System.out.println("Text length: " + text.length());       System.out.println("Html length: " + html.length());       System.out.println("Number of outgoing links: " + links.size());     } System.out.println("============="); }    

Step 4 Create a Java class name “BasicCrawlController” import edu.uci.ics.crawler4j.crawler.CrawlConfig; import edu.uci.ics.crawler4j.crawler.CrawlController; import edu.uci.ics.crawler4j.fetcher.PageFetcher; import edu.uci.ics.crawler4j.robotstxt.RobotstxtConfig; import edu.uci.ics.crawler4j.robotstxt.RobotstxtServer; public class BasicCrawlController { }

Step 4 Create main method public static void main(String[] args) throws Exception { String crawlStorageFolder = "C:\\Storage\\"; int numberOfCrawlers = 1     CrawlConfig config = new CrawlConfig();     config.setCrawlStorageFolder(crawlStorageFolder); config.setPolitenessDelay(1000); config.setMaxDepthOfCrawling(2); config.setMaxPagesToFetch(1000); config.setResumableCrawling(false); //continue next page

Step 4 PageFetcher pageFetcher = new PageFetcher(config);     RobotstxtConfig robotstxtConfig = new RobotstxtConfig();     RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);     CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer); controller.addSeed("http://www.ics.uci.edu/");     controller.start(BasicCrawler.class, numberOfCrawlers);   }

Step 5 Run Select Run → Run Configurations option and select your project and BasicCrawlController as the main class. Click Apply button and then Run to start your first webcrawler. Deleting content of: C:\Storage\frontier  INFO [main] Crawler 1 started.  INFO [main] Crawler 2 started.

Step 5 Result Docid: 1 URL: http://www.ics.uci.edu/~lopes/ Domain: 'uci.edu' Sub-domain: 'www.ics' Path: '/~lopes/' Parent page: null Anchor text: null Text length: 2442 Html length: 9987 Number of outgoing links: 34 =============

Step 5 Finish Crawl INFO [Thread-1] It looks like no thread is working, waiting for 10 seconds to make sure...  INFO [Thread-1] No thread is working and no more URLs are in queue waiting for another 10 seconds to make sure...  INFO [Thread-1] All of the crawlers are stopped. Finishing the process...  INFO [Thread-1] Waiting for 10 seconds before final clean up...