A Web crawler is a computer program that browses the World Wide Web in a methodical, automated manner or in an orderly fashion. Other terms for Web crawlers are ants, automatic indexers, bots, Web spiders, Web robots, or—especially in the FOAF community—Web scutters. This process is called Web crawling or spidering. Many sites, in particular search engines,
use spidering as a means of providing up-to-date data. Web crawlers are
mainly used to create a copy of all the visited pages for later
processing by a search engine that will index
the downloaded pages to provide fast searches. Crawlers can also be
used for automating maintenance tasks on a Web site, such as checking
links or validating HTML
code. Also, crawlers can be used to gather specific types of
information from Web pages, such as harvesting e-mail addresses (usually
for sending spam).
A Web crawler is one type of bot, or software agent. In general, it starts with a list of URLs to visit, called the seeds. As the crawler visits these URLs, it identifies all the hyperlinks in the page and adds them to the list of URLs to visit, called the crawl frontier. URLs from the frontier are recursively visited according to a set of policies. The large volume implies that the crawler can only download limited
number of the Web pages within a given time, so it needs to prioritize
its downloads. The high rate of change implies that the pages might have
already been updated or even deleted.
The number of possible crawlable URLs
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." 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.
Selection policy
Given the current size of the Web, even large search engines cover
only a portion of the publicly-available part. A 2005 study showed that
large-scale search engines index no more than 40%-70% of the indexable
Web; a previous study by Dr. Steve Lawrence and Lee Giles showed that no search engine indexed more than 16% of the Web in 1999.
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. 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. Cho also wrote his Ph.D. dissertation at Stanford on web
crawling. Najork and Wiener 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).
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.
Baeza-Yates et al. 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. 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.
Focused crawling
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 and by Chakrabarti et al. 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 in the first web crawler of the early days of the Web. Diligenti et al.
propose using 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.
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 a rewrite engine to simplify its URLs.
URL normalization
Crawlers usually perform some type of URL normalization in order to avoid crawling the same resource more than once. The term URL normalization, also called URL canonicalization,
refers to the process of modifying and standardizing a URL in a
consistent manner. There are several types of normalization that may be
performed including conversion of URLs to lowercase, removal of "." and
".." segments, and adding trailing slashes to the non-empty path
component.
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.
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 Web harvesting
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.
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.
Freshness: This is a binary measure that indicates whether the local copy is accurate or not.
Coffman et al.
worked with a definition of the objective of a Web crawler that is
equivalent to freshness, but use a different wording: they propose that a
crawler must minimize the fraction of time pages remain outdated. They
also noted that the problem of Web crawling can be modeled as a
multiple-queue, single-server polling system, on which the Web crawler
is the server and the Web sites are the queues. Page modifications are
the arrival of the customers, and switch-over times are the interval
between page accesses to a single Web site. Under this model, mean
waiting time for a customer in the polling system is equivalent to the
average age for the Web crawler. The objective of the crawler is to keep the average freshness of
pages in its collection as high as possible, or to keep the average age
of pages as low as possible. These objectives are not equivalent: in the
first case, the crawler is just concerned with how many pages are
out-dated, while in the second case, the crawler is concerned with how
old the local copies of pages are.
Uniform policy : This involves re-visiting all pages in the collection with the same frequency, regardless of their rates of change.
Proportional policy : This involves re-visiting more often the
pages that change more frequently. The visiting frequency is directly
proportional to the (estimated) change frequency. (In both cases, the repeated crawling order of pages can be done either in a random or a fixed order). Cho and Garcia-Molina proved the surprising result that, in terms of
average freshness, the uniform policy outperforms the proportional
policy in both a simulated Web and a real Web crawl. Intuitively, the
reasoning is that, as web crawlers have a limit to how many pages they
can crawl in a given time frame, (1) they will allocate too many new
crawls to rapidly changing pages at the expense of less frequently
updating pages, and (2) the freshness of rapidly changing pages lasts
for shorter period than that of less frequently changing pages. In other
words, a proportional policy allocates more resources to crawling
frequently updating pages, but experiences less overall freshness time
from them.
To improve freshness, the crawler should penalize the elements that change too often. The optimal re-visiting policy is neither the uniform policy nor the
proportional policy. The optimal method for keeping average freshness
high includes ignoring the pages that change too often, and the optimal
for keeping average age low is to use access frequencies that
monotonically (and sub-linearly) increase with the rate of change of
each page. In both cases, the optimal is closer to the uniform policy
than to the proportional policy : as Coffman et al.
note, "in order to minimize the expected obsolescence time, the
accesses to any particular page should be kept as evenly spaced as
possible".
Explicit formulas for the re-visit policy are not attainable in
general, but they are obtained numerically, as they depend on the
distribution of page changes. Cho and Garcia-Molina show that the
exponential distribution is a good fit for describing page changes, while Ipeirotis et al. show how to use statistical tools to discover parameters that affect this distribution.
Note that the re-visiting policies considered here regard all pages as
homogeneous in terms of quality ("all pages on the Web are worth the
same"), something that is not a realistic scenario, so further
information about the Web page quality should be included to achieve a
better crawling policy.
Politeness policy
Crawlers can retrieve data much quicker and in greater depth than
human searchers, so they can have a crippling impact on the performance
of a site. Needless to say, if a single crawler is performing multiple
requests per second and/or downloading large files, a server would have a
hard time keeping up with requests from multiple crawlers.
As noted by Koster, the use of Web crawlers is useful for a number of tasks, but comes with a price for the general community. The costs of using Web crawlers include :
- network resources, as crawlers require considerable bandwidth and operate with a high degree of parallelism during a long period of time;
- server overload, especially if the frequency of accesses to a given server is too high;
- poorly-written crawlers, which can crash servers or routers, or which download pages they cannot handle; and
- personal crawlers that, if deployed by too many users, can disrupt networks and Web servers.
A partial solution to these problems is the robots exclusion protocol,
also known as the robots.txt protocol that is a standard for
administrators to indicate which parts of their Web servers should not
be accessed by crawlers.
This standard does not include a suggestion for the interval of visits
to the same server, even though this interval is the most effective way
of avoiding server overload.
The first proposed interval between connections was 60 seconds.
However, if pages were downloaded at this rate from a website with more
than 100,000 pages over a perfect connection with zero latency and
infinite bandwidth, it would take more than 2 months to download only
that entire Web site; also, only a fraction of the resources from that
Web server would be used. This does not seem acceptable. Cho uses 10 seconds as an interval for accesses, and the WIRE crawler uses 15 seconds as the default.The MercatorWeb crawler follows an adaptive politeness policy: if it took t seconds to download a document from a given server, the crawler waits for 10t seconds before downloading the next page. Dill et al. use 1 second. For those using Web crawlers for research purposes, a more detailed
cost-benefit analysis is needed and ethical considerations should be
taken into account when deciding where to crawl and how fast to crawl. Anecdotal evidence from access logs shows that access intervals from
known crawlers vary between 20 seconds and 3–4 minutes. It is worth
noticing that even when being very polite, and taking all the safeguards
to avoid overloading Web servers, some complaints from Web server
administrators are received. Brin and Page
note that: "... running a crawler which connects to more than half a
million servers (...) generates a fair amount of e-mail and phone calls.
Because of the vast number of people coming on line, there are always
those who do not know what a crawler is, because this is the first one
they have seen".
Parallelization policy
A parallel
crawler is a crawler that runs multiple processes in parallel. The goal
is to maximize the download rate while minimizing the overhead from
parallelization and to avoid repeated downloads of the same page. To
avoid downloading the same page more than once, the crawling system
requires a policy for assigning the new URLs discovered during the
crawling process, as the same URL can be found by two different crawling
processes.
Architectures
A crawler must not only have a good crawling strategy, as noted in
the previous sections, but it should also have a highly optimized
architecture.
While it is fairly easy to build a slow crawler that downloads a few pages per second for a short period of time, building a high-performance system that can download hundreds of millions of pages over several weeks presents a number of challenges in system design, I/O and network efficiency, and robustness and manageability.
Web crawlers are a central part of search engines, and details on
their algorithms and architecture are kept as business secrets. When
crawler designs are published, there is often an important lack of
detail that prevents others from reproducing the work. There are also
emerging concerns about "search engine spamming", which prevent major search engines from publishing their ranking algorithms.
Crawler identification
Web crawlers typically identify themselves to a Web server by using the User-agent field of an HTTP request. Web site administrators typically examine their Web servers'
log and use the user agent field to determine which crawlers have
visited the web server and how often. The user agent field may include a
URL where the Web site administrator may find out more information about the crawler. Spambots
and other malicious Web crawlers are unlikely to place identifying
information in the user agent field, or they may mask their identity as a
browser or other well-known crawler.
It is important for Web crawlers to identify themselves so that Web
site administrators can contact the owner if needed. In some cases,
crawlers may be accidentally trapped in a crawler trap
or they may be overloading a Web server with requests, and the owner
needs to stop the crawler. Identification is also useful for
administrators that are interested in knowing when they may expect their
Web pages to be indexed by a particular search engine.
Crawling the Deep Web
A vast amount of Web pages lie in the deep or invisible Web. 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 Sitemaps protocol and mod oai 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.
0 comments:
Post a Comment