国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python爬蟲獲取整個站點中的所有外部鏈接代碼示例

2020-02-16 11:19:47
字體:
來源:轉載
供稿:網友

收集所有外部鏈接的網站爬蟲程序流程圖

下例是爬取本站python繪制條形圖方法代碼詳解的實例,大家可以參考下。

完整代碼:

#! /usr/bin/env python#coding=utf-8import urllib2from  bs4 import BeautifulSoupimport reimport datetimeimport randompages=set()random.seed(datetime.datetime.now())#Retrieves a list of all Internal links found on a pagedef getInternalLinks(bsObj, includeUrl):        internalLinks  =  []        #Finds all links  that  begin  with  a  "/"        for link  in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")):                if link.attrs['href'] is not None:                        if link.attrs['href'] not in internalLinks:                                internalLinks.append(link.attrs['href'])        return internalLinks#Retrieves a list of all external links found on a pagedef getExternalLinks(bsObj, excludeUrl):        externalLinks  =  []        #Finds all links  that  start  with  "http" or "www"  that  do        #not  contain the current URL        for link  in bsObj.findAll("a",                               href=re.compile("^(http|www)((?!"+excludeUrl+").)*$")):                if link.attrs['href'] is not None:                        if link.attrs['href'] not in externalLinks:                                externalLinks.append(link.attrs['href'])        return externalLinksdef splitAddress(address):        addressParts  =  address.replace("http://", "").split("/")        return addressPartsdef getRandomExternalLink(startingPage):        html=  urllib2.urlopen(startingPage)        bsObj  =  BeautifulSoup(html)        externalLinks  =  getExternalLinks(bsObj, splitAddress(startingPage)[0])        if len(externalLinks) == 0:                internalLinks  =  getInternalLinks(startingPage)                return internalLinks[random.randint(0, len(internalLinks)-1)]        else:                return externalLinks[random.randint(0, len(externalLinks)-1)]def followExternalOnly(startingSite):        externalLink=getRandomExternalLink("http://www.jb51.net/article/130968.htm")        print("Random  external  link  is: "+externalLink)        followExternalOnly(externalLink)#Collects a list of all external URLs found on the siteallExtLinks=set()allIntLinks=set()def getAllExternalLinks(siteUrl):    html=urllib2.urlopen(siteUrl)    bsObj=BeautifulSoup(html)    internalLinks  =  getInternalLinks(bsObj,splitAddress(siteUrl)[0])    externalLinks  =  getExternalLinks(bsObj,splitAddress(siteUrl)[0])    for link in externalLinks:      if link not in allExtLinks:        allExtLinks.add(link)        print(link)    for link in internalLinks:      if link not in allIntLinks:        print("About to get link:"+link)        allIntLinks.add(link)        getAllExternalLinks(link)getAllExternalLinks("http://www.jb51.net/article/130968.htm")            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牙克石市| 巩留县| 河源市| 汤阴县| 砀山县| 丹阳市| 称多县| 明溪县| 安岳县| 溧阳市| 深水埗区| 泸水县| 涿鹿县| 新沂市| 阿拉善左旗| 邵东县| 萍乡市| 凤城市| 滦南县| 安康市| 鹿邑县| 遵化市| 阿拉善左旗| 普洱| 阳谷县| 延边| 萍乡市| 罗源县| 阳春市| 金坛市| 晋中市| 岑巩县| 河西区| 武穴市| 惠安县| 革吉县| 山阴县| 军事| 西乌珠穆沁旗| 丰台区| 双江|