Python 爬虫笔记(获取整个站点中的所有外部链接)
来源:互联网 发布:java 数组接收 split 编辑:程序博客网 时间:2024/06/06 20:04
#! /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.iamnotgay.cn") 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://iamnotgay.cn")
收集所有外部链接的网站爬虫程序流程图
0 0
- Python 爬虫笔记(获取整个站点中的所有外部链接)
- Python爬虫小实践:获取某个网站所有的外部链接以及内部链接
- WSWP(用python写爬虫)笔记二:实现链接获取和数据存储爬虫
- Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码
- Python爬虫(七)学习提取网页中所有链接
- Python爬虫(4)——获取CSDN链接
- 获取网页中的所有超级链接(爬虫专用)
- Python 爬虫获取某贴吧所有成员用户名
- Python多线程爬虫获取电影下载链接
- Python爬虫获取电影链接(续)
- python爬虫爬去贴吧中的所有图片
- Python爬虫实现(免登陆站点)
- jquery怎么获取整个<DIV>...</DIV>包涵中的所有代码
- 【使用JSOUP实现网络爬虫】获取所有链接
- 【使用JSOUP实现网络爬虫】获取所有链接
- python获取网页上所有链接
- Python 网络爬虫 004 (编程) 如何编写一个网络爬虫,来下载(或叫:爬取)一个站点里的所有网页
- 学习笔记-spring-mybatis-jsoup-http-client小说站点爬虫(1)--获取小说站点章节列表
- android中使用PopupWindow实现取消确定对话框
- 跟着鬼哥学爬虫-8-python微信-3-集合进去糗事百科!
- NDK各个版本链接
- Xcode8 新特性2
- 荆棘
- Python 爬虫笔记(获取整个站点中的所有外部链接)
- python使用jdbc连接phoenix
- leetcode167. Two Sum II - Input array is sorted
- android系统架构及源码目录结构
- IRP 处理流程
- secureCRT 7.3软件下载及破解工具+教程
- 人脸识别(活体检测)-使用敏识提供的第三方SDK
- AndroidStudio导入第三方库的一些问题
- 升高、降低gcc版本的简易方法