NLTK language detection code in Python
Some of your functions behave a bit unconventionally.

checkEnglish() only returns 1 or 0.  It would be clearer to return True or False, and rename the function to isEnglish().



getPage() won't allow retrieval of HTTPS URLs.  I would avoid trying to be "helpful" by automatically mangling the URL, unless such mangling was really smart and thorough (as good as the intelligence in your browser's address bar).  By the way, URI schemes are case insensitive (RFC 3986 Sec 3.1).

In getPage(), you swallow exceptions.  That's not good practice, but if you're going to do it, do it succinctly:

def getPage(url):
    print "Checking the site ", url
    req = urllib2.Request(url)
    try:
        response = urllib2.urlopen(req)
        return response.read()
    except:
        return None




In getPtag() and getDescription(), avoid nesting:

def getPtag(webPage):
    if webPage is None:
        return None
    match = re.search(r'&lt;p\W*(.+)\W*&lt;/p&gt;', webPage)
    if not match:
        return None
    return match.group(1)


In general, HTML is case insensitive, so use case-insensitive regular expression matching (or an HTML parser).



Your checking() function could use some improvement:


Returning strings '1', '0', or 'NULL' is really weird.  Returning True, False, or None would make more sense.
The name of the function is weird.  It should be something like isEnglishUrl().
Prefer to return early, and express the cascade more simply.

def isEnglishUrl(url):
    pageText = getPage(url)
    if pageText is None:
        return None
    return isEnglish(getDescription(pageText)) or \
           isEnglish(getPtag(pageText)) or \
           isEnglish(pageText)


If getPage() hadn't swallowed exceptions in the first place, then isEnglishUrl() wouldn't have to deal with that pesky if pageText is None.  Instead, it could just let the exception propagate and let its caller deal with it, for more flexibility with less code.




Since Python 2.5, the preferred way to open and close files is using a with block:

RESULT_STR = { True: '1', False: '0', None: 'NULL' }
with open('sample_domain_list.txt') as f:
    with open('newestResult.txt', 'w') as s:
        for line in f.readlines()[:20]:
            url = line.split(',')[1][1:-1]
            eng = isEnglishUrl(url)
            s.write("%s,%s\n" % (url, RESULT_STR[eng]))