cse 7 5337 information retrieval and web search web
play

CSE 7/5337: Information Retrieval and Web Search Web crawling and - PowerPoint PPT Presentation

CSE 7/5337: Information Retrieval and Web Search Web crawling and indexes (IIR 20) Michael Hahsler Southern Methodist University These slides are largely based on the slides by Hinrich Sch utze Institute for Natural Language Processing,


  1. CSE 7/5337: Information Retrieval and Web Search Web crawling and indexes (IIR 20) Michael Hahsler Southern Methodist University These slides are largely based on the slides by Hinrich Sch¨ utze Institute for Natural Language Processing, University of Stuttgart http://informationretrieval.org Spring 2012 Hahsler (SMU) CSE 7/5337 Spring 2012 1 / 27

  2. Outline A simple crawler 1 A real crawler 2 Hahsler (SMU) CSE 7/5337 Spring 2012 2 / 27

  3. How hard can crawling be? Web search engines must crawl their documents. Getting the content of the documents is easier for many other IR systems. ◮ E.g., indexing all files on your hard disk: just do a recursive descent on your file system Ok: for web IR, getting the content of the documents takes longer . . . . . . because of latency. But is that really a design/systems challenge? Hahsler (SMU) CSE 7/5337 Spring 2012 3 / 27

  4. Basic crawler operation Initialize queue with URLs of known seed pages Repeat ◮ Take URL from queue ◮ Fetch and parse page ◮ Extract URLs from page ◮ Add URLs to queue Fundamental assumption: The web is well linked. Hahsler (SMU) CSE 7/5337 Spring 2012 4 / 27

  5. Exercise: What’s wrong with this crawler? urlqueue := (some carefully selected set of seed urls) while urlqueue is not empty: myurl := urlqueue.getlastanddelete() mypage := myurl.fetch() fetchedurls.add(myurl) newurls := mypage.extracturls() for myurl in newurls: if myurl not in fetchedurls and not in urlqueue: urlqueue.add(myurl) addtoinvertedindex(mypage) Hahsler (SMU) CSE 7/5337 Spring 2012 5 / 27

  6. What’s wrong with the simple crawler Scale: we need to distribute. We can’t index everything: we need to subselect. How? Duplicates: need to integrate duplicate detection Spam and spider traps: need to integrate spam detection Politeness: we need to be “nice” and space out all requests for a site over a longer period (hours, days) Freshness: we need to recrawl periodically. ◮ Because of the size of the web, we can do frequent recrawls only for a small subset. ◮ Again, subselection problem or prioritization Hahsler (SMU) CSE 7/5337 Spring 2012 6 / 27

  7. Magnitude of the crawling problem To fetch 20,000,000,000 pages in one month . . . . . . we need to fetch almost 8000 pages per second! Actually: many more since many of the pages we attempt to crawl will be duplicates, unfetchable, spam etc. Hahsler (SMU) CSE 7/5337 Spring 2012 7 / 27

  8. What a crawler must do Be polite Don’t hit a site too often Only crawl pages you are allowed to crawl: robots.txt Be robust Be immune to spider traps, duplicates, very large pages, very large websites, dynamic pages etc Hahsler (SMU) CSE 7/5337 Spring 2012 8 / 27

  9. Robots.txt Protocol for giving crawlers (“robots”) limited access to a website, originally from 1994 Examples: ◮ User-agent: * Disallow: /yoursite/temp/ ◮ User-agent: searchengine Disallow: / Important: cache the robots.txt file of each site we are crawling Hahsler (SMU) CSE 7/5337 Spring 2012 9 / 27

  10. Example of a robots.txt (nih.gov) User-agent: PicoSearch/1.0 Disallow: /news/information/knight/ Disallow: /nidcd/ ... Disallow: /news/research_matters/secure/ Disallow: /od/ocpl/wag/ User-agent: * Disallow: /news/information/knight/ Disallow: /nidcd/ ... Disallow: /news/research_matters/secure/ Disallow: /od/ocpl/wag/ Disallow: /ddir/ Disallow: /sdminutes/ Hahsler (SMU) CSE 7/5337 Spring 2012 10 / 27

  11. What any crawler should do Be capable of distributed operation Be scalable: need to be able to increase crawl rate by adding more machines Fetch pages of higher quality first Continuous operation: get fresh version of already crawled pages Hahsler (SMU) CSE 7/5337 Spring 2012 11 / 27

  12. Outline A simple crawler 1 A real crawler 2 Hahsler (SMU) CSE 7/5337 Spring 2012 12 / 27

  13. URL frontier Hahsler (SMU) CSE 7/5337 Spring 2012 13 / 27

  14. URL frontier The URL frontier is the data structure that holds and manages URLs we’ve seen, but that have not been crawled yet. Can include multiple pages from the same host Must avoid trying to fetch them all at the same time Must keep all crawling threads busy Hahsler (SMU) CSE 7/5337 Spring 2012 14 / 27

  15. Basic crawl architecture doc robots URL templates set FPs ✓ ✏ ✓ ✏ ✓ ✏ ✛ ✲ DNS ✒✑ ✒✑ ✒✑ ✻ ✒ ✑ ✒ ✑ ✒ ✑ ❄ ✻ ✻ ✻ ❄ ❄ ❄ ✛ ✲ ✲ ✲ www dup content URL parse URL ✲ ✲ seen? filter elim fetch ✻ ✛ URL frontier Hahsler (SMU) CSE 7/5337 Spring 2012 15 / 27

  16. URL normalization Some URLs extracted from a document are relative URLs. E.g., at http://mit.edu, we may have aboutsite.html ◮ This is the same as: http://mit.edu/aboutsite.html During parsing, we must normalize (expand) all relative URLs. Hahsler (SMU) CSE 7/5337 Spring 2012 16 / 27

  17. Content seen For each page fetched: check if the content is already in the index Check this using document fingerprints or shingles Skip documents whose content has already been indexed Hahsler (SMU) CSE 7/5337 Spring 2012 17 / 27

  18. Distributing the crawler Run multiple crawl threads, potentially at different nodes ◮ Usually geographically distributed nodes Partition hosts being crawled into nodes Hahsler (SMU) CSE 7/5337 Spring 2012 18 / 27

  19. Google data centers Hahsler (SMU) CSE 7/5337 Spring 2012 19 / 27

  20. Distributed crawler doc URL set FPs ✓ ✏ ✓ ✏ ✛✲ DNS to ✍ ✌ ✍ ✌ other ✻ ✒ ✑ ✒ ✑ nodes ❄ ✻ ✻✻✻ ✻ ❄ ❄ ✛ ✲ ✲ ✲ ✲ www dup ✲ host content URL parse ✲ URL ✲ ✲ splitter ✲ seen? filter fetch elim from other ✻ nodes ✛ URL frontier Hahsler (SMU) CSE 7/5337 Spring 2012 20 / 27

  21. URL frontier: Two main considerations Politeness: Don’t hit a web server too frequently ◮ E.g., insert a time gap between successive requests to the same server Freshness: Crawl some pages (e.g., news sites) more often than others Not an easy problem: simple priority queue fails. Hahsler (SMU) CSE 7/5337 Spring 2012 21 / 27

  22. Mercator URL frontier ❄ prioritizer ✏ ✏ PPPPP ✏ ✏ ✏ ✏ ✏ ✏ 1 ✏ ✏ ✮ ✮ ✏ ✏ q P F ♣ ♣ ♣ ♣ F front queues URLs flow in from the top ❍❍❍❍ ❍❍❍❍ ✟ ✟ into the frontier. ✟ ✟ ❍ ❥ ❥ ❍ ✙ ✟ Front queues manage f. queue selector & b. queue router ✘ ✘ ❳❳❳❳❳❳ prioritization. ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ 1 ✾ ✘ ✾ ✘ B ③ Back queues enforce B back queues: ♣ ♣ ♣ ♣ ♣ politeness. single host on each Each queue is FIFO. ❳❳❳❳❳ ❳❳❳❳❳ ✘ ✘ ✘ ✘ ③ ❳ ❳ ③ ✘ ✘ ✾ ✛ ✲ heap b. queue selector ❄ Hahsler (SMU) CSE 7/5337 Spring 2012 22 / 27

  23. Mercator URL frontier: Front queues ❄ Prioritizer assigns prioritizer ✏ ✏ PPPPPP ✏ ✏ to URL an integer ✏ ✏ ✏ ✏ ✏ ✏ ✏ ✏ 1 F ✏ ✮ ✏ ✮ q P priority between 1 and F . q q q q F front queues Then appends URL to corresponding ❍❍❍❍❍❍ ❍❍❍❍❍❍ ✟ queue ✟ ✟ ✟ ✟ Heuristics for ✟ ❍ ❥ ❥ ❍ ✟ ✙ assigning priority: f. queue selector & b. queue router refresh rate, PageRank etc Selection from front queues is initiated by back queues Pick a front queue Hahsler (SMU) CSE 7/5337 Spring 2012 23 / 27

  24. Mercator URL frontier: Back queues Invariant 1. Each f. queue selector & b. queue router ✘ ✘ ❳❳❳❳❳❳❳ ✘ ✘ back queue is kept ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ 1 ✘ ✘ B ✘ ✾ ✾ ✘ non-empty while the ❳ ③ crawl is in progress. B back queues q q q q Single host on each Invariant 2. Each back queue only ❳❳❳❳❳❳ ❳❳❳❳❳❳ ✘ ✘ contains URLs from a ✘ ✘ ✘ ✘ ❳ ③ ❳ ③ ✾ ✘ single host. ✛ ✲ heap b. queue selector Maintain a table from hosts to back queues. ❄ In the heap: One entry for each back queue The entry is the earliest time t e at Hahsler (SMU) CSE 7/5337 Spring 2012 24 / 27 which the host

  25. Mercator URL frontier ❄ prioritizer ✏ ✏ PPPPP ✏ ✏ ✏ ✏ ✏ ✏ 1 ✏ ✏ ✮ ✮ ✏ ✏ q P F ♣ ♣ ♣ ♣ F front queues URLs flow in from the top ❍❍❍❍ ❍❍❍❍ ✟ ✟ into the frontier. ✟ ✟ ❍ ❥ ❥ ❍ ✙ ✟ Front queues manage f. queue selector & b. queue router ✘ ✘ ❳❳❳❳❳❳ prioritization. ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ 1 ✾ ✘ ✾ ✘ B ③ Back queues enforce B back queues: ♣ ♣ ♣ ♣ ♣ politeness. single host on each Each queue is FIFO. ❳❳❳❳❳ ❳❳❳❳❳ ✘ ✘ ✘ ✘ ③ ❳ ❳ ③ ✘ ✘ ✾ ✛ ✲ heap b. queue selector ❄ Hahsler (SMU) CSE 7/5337 Spring 2012 25 / 27

  26. Spider trap Malicious server that generates an infinite sequence of linked pages Sophisticated spider traps generate pages that are not easily identified as dynamic. Hahsler (SMU) CSE 7/5337 Spring 2012 26 / 27

  27. Resources Chapter 20 of IIR Resources at http://ifnlp.org/ir ◮ Paper on Mercator by Heydon et al. ◮ Robot exclusion standard Hahsler (SMU) CSE 7/5337 Spring 2012 27 / 27

Recommend


More recommend