The high
rate of change implies that by the time the crawler is downloading the last
pages from a site, it is very likely that new pages have been added to the site,
or that pages have already been updated or even deleted.
The number of pages being generated by server-side software has also made it
difficult for web crawlers to avoid retrieving duplicate content. Endless
combinations of HTTP GET (URL-based) parameters exist, of which only a small
selection will actually return unique content. For example, a simple online
photo gallery may offer three options to users, as specified through HTTP GET
parameters in the URL. If there exist four ways to sort images, three choices of
thumbnail size, two file formats, and an option to disable user-provided
content, then the same set of content can be accessed with 48 different URLs,
all of which may be linked on the site. This mathematical combination creates a
problem for crawlers, as they must sort through endless combinations of
relatively minor scripted changes in order to retrieve unique content.
As Edwards et al. noted, "Given that the bandwidth for conducting crawls is
neither infinite nor free, it is becoming essential to crawl the Web in not only
a scalable, but efficient way, if some reasonable measure of quality or
freshness is to be maintained." [3]. A crawler must carefully choose at each
step which pages to visit next.
The behavior of a Web crawler is the outcome of a combination of policies:
a selection policy that states which pages to download,
a re-visit policy that states when to check for changes to the pages,
a politeness policy that states how to avoid overloading Web sites, and
a parallelization policy that states how to coordinate distributed Web crawlers.
[edit] Selection policy
Given the current size of the Web, even large search engines cover only a
portion of the publicly-available Internet; a study by Dr. Steve Lawrence and
Lee Giles showed that no search engine indexes more than 16% of the Web in 1999.
[4] As a crawler always downloads just a fraction of the Web pages, it is highly
desirable that the downloaded fraction contains the most relevant pages and not
just a random sample of the Web.
This requires a metric of importance for prioritizing Web pages. The importance
of a page is a function of its intrinsic quality, its popularity in terms of
links or visits, and even of its URL (the latter is the case of vertical search
engines restricted to a single top-level domain, or search engines restricted to
a fixed Web site). Designing a good selection policy has an added difficulty: it
must work with partial information, as the complete set of Web pages is not
known during crawling.
Cho et al. made the first study on policies for crawling scheduling. Their data
set was a 180,000-pages crawl from the stanford.edu domain, in which a crawling
simulation was done with different strategies. [5] The ordering metrics tested
were breadth-first, backlink-count and partial Pagerank calculations. One of the
conclusions was that if the crawler wants to download pages with high Pagerank
early during the crawling process, then the partial Pagerank strategy is the
better, followed by breadth-first and backlink-count. However, these results are
for just a single domain.
Najork and Wiener [6] performed an actual crawl on 328 million pages, using
breadth-first ordering. They found that a breadth-first crawl captures pages
with high Pagerank early in the crawl (but they did not compare this strategy
against other strategies). The explanation given by the authors for this result
is that "the most important pages have many links to them from numerous hosts,
and those links will be found early, regardless of on which host or page the
crawl originates".
Abiteboul designed a crawling strategy based on an algorithm called OPIC
(On-line Page Importance Computation). [7] In OPIC, each page is given an
initial sum of "cash" that is distributed equally among the pages it points to.
It is similar to a Pagerank computation, but it is faster and is only done in
one step. An OPIC-driven crawler downloads first the pages in the crawling
frontier with higher amounts of "cash". Experiments were carried in a
100,000-pages synthetic graph with a power-law distribution of in-links.
However, there was no comparison with other strategies nor experiments in the
real Web.
Boldi et al. used simulation on subsets of the Web of 40 million pages from the
.it domain and 100 million pages from the WebBase crawl, testing breadth-first
against depth-first, random ordering and an omniscient strategy. The comparison
was based on how well PageRank computed on a partial crawl approximates the true
PageRank value. Surprisingly, some visits that accumulate PageRank very quickly
(most notably, breadth-first and the omniscent visit) provide very poor
progressive approximations.[8] [9] Baeza-Yates et al. [10] used simulation on
two subsets of the Web of 3 million pages from the .gr and .cl domain, testing
several crawling strategies. They showed that both the OPIC strategy and a
strategy that uses the length of the per-site queues are better than
breadth-first crawling, and that it is also very effective to use a previous
crawl, when it is available, to guide the current one.
Daneshpajouh et al. [11] designed a community based algorithm for discovering
good seeds. Their method crawls web pages with high PageRank from different
communities in less iteration in comparison with crawl starting from random
seeds. One can extract good seed from a previously-crawled-Web graph using this
new method. Using these seeds a new crawl can be very effective.
[edit] Restricting followed links
A crawler may only want to seek out HTML pages and avoid all other MIME types.
In order to request only HTML resources, a crawler may make an HTTP HEAD request
to determine a Web resource's MIME type before requesting the entire resource
with a GET request. To avoid making numerous HEAD requests, a crawler may
examine the URL and only request a resource if the URL ends with certain
characters such as .html, .htm, .asp, .aspx, .php, .jsp, .jspx or a slash. This
strategy may cause numerous HTML Web resources to be unintentionally skipped.
Some crawlers may also avoid requesting any resources that have a "?" in them
(are dynamically produced) in order to avoid spider traps that may cause the
crawler to download an infinite number of URLs from a Web site. This strategy is
unreliable if the site uses URL rewriting to simplify its URLs.
[edit] Path-ascending crawling
Some crawlers intend to download as many resources as possible from a particular
web site. So path-ascending crawler was introduced that would ascend to every
path in each URL that it intends to crawl.[12] For example, when given a seed
URL of http://llama.org/hamster/monkey/page.html, it will attempt to crawl
/hamster/monkey/, /hamster/, and /. Cothey found that a path-ascending crawler
was very effective in finding isolated resources, or resources for which no
inbound link would have been found in regular crawling.
Many path-ascending crawlers are also known as Harvester software, because
they're used to "harvest" or collect all the content — perhaps the collection of
photos in a gallery — from a specific page or host.
[edit] Focused crawling
Main article: Focused crawler
The importance of a page for a crawler can also be expressed as a function of
the similarity of a page to a given query. Web crawlers that attempt to download
pages that are similar to each other are called focused crawler or topical
crawlers. The concepts of topical and focused crawling were first introduced by
Menczer [13] [14] and by Chakrabarti et al. [15].
The main problem in focused crawling is that in the context of a Web crawler, we
would like to be able to predict the similarity of the text of a given page to
the query before actually downloading the page. A possible predictor is the
anchor text of links; this was the approach taken by Pinkerton [16] in a crawler
developed in the early days of the Web. Diligenti et al. [17] propose to use the
complete content of the pages already visited to infer the similarity between
the driving query and the pages that have not been visited yet. The performance
of a focused crawling depends mostly on the richness of links in the specific
topic being searched, and a focused crawling usually relies on a general Web
search engine for providing starting points.
[edit] Crawling the Deep Web
A vast amount of Web pages lie in the deep or invisible Web[18]. These pages are
typically only accessible by submitting queries to a database, and regular
crawlers are unable to find these pages if there are no links that point to
them. Google's Sitemap Protocol and mod oai[19] are intended to allow discovery
of these deep-Web resources.
Deep Web crawling also multiplies the number of Web links to be crawled. Some
crawlers only take some of the <a href="URL"-shaped URLs. In some cases, such as
the Googlebot, Web crawling is done on all text contained inside the hypertext
content, tags, or text.
[edit] Re-visit policy
The Web has a very dynamic nature, and crawling a fraction of the Web can take
weeks or months. By the time a Web crawler has finished its crawl, many events
could have happened, including creations, updates and deletions.
From the search engine's point of view, there is a cost associated with not
detecting an event, and thus having an outdated copy of a resource. The
most-used cost functions are freshness and age.[20]