【爬虫实践】用递归获取网站的所有内链和外链
【爬虫实践】用递归获取网站的所有内链和外链
环境:Windows7 +Python3.6+Pycharm2017
目标:从一个网站的顶层开始,爬取该网站所有内链和外链,便于绘制网站地图!
通常网站的深度有5层左右的网页,广度有10个网页,所有大部分网站的页面数量都在10的5次方,就是10万个以内,但是python递归默认限制是1000,这就需要用sys模块的设置突破1000的限制。为了运行控制方便,这里增加了计数器变量iii,可也根据自己需要取消计数器。由于代码不长,也比较简单,直接上代码了!
代码如下:
`.
#coding=utf-8
from urllib.parse import urlparse
from urllib.request import Request
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re,datetime,random
import syssys.setrecursionlimit(5000) #递归需要超过1000时的解决方式是手工设置递归调用深度,这里设置为5000internalLinks = set()
externalLinks = set()
iii = 0
random.seed(datetime.datetime.now())#获取内链
def getInternalLinks(includeUrl):global internalLinks,iiiiii += 1while iii <= 10:data = Request(url=includeUrl,headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/535.19'})html = urlopen(data)# print(iii,html)soup = BeautifulSoup(html,'html.parser')# print(soup)includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme,urlparse(includeUrl).netloc)#在href中找/开头的链接for link in soup.find_all('',href = re.compile('^(/|.*'+includeUrl+')')):if link.attrs['href'] is not None:if link.attrs['href'] not in internalLinks:if (link.attrs['href'].startswith('/')):internalLinks.add(includeUrl + link.attrs['href'])getExternalLinks(soup,includeUrl)getInternalLinks(includeUrl + link.attrs['href'])else:internalLinks.add(link.attrs['href'])getExternalLinks(soup,includeUrl)getInternalLinks(link.attrs['href'])return#获取外链
def getExternalLinks(soup,excludeUrl):global externalLinks#在href中找http开头或者www开头的且不含当前url的链接for link in soup.find_all('a',href = re.compile('^(http|www)((?!'+excludeUrl+').)*$')):if link.attrs['href'] is not None:if link.attrs['href'] not in externalLinks:externalLinks.add(link.attrs['href'])returngetInternalLinks('http://www.jindishoes.com')
print('总共获取了%d内部链接!'% len(internalLinks))
print('总共获取了%d内部链接!'% len(externalLinks))
print(internalLinks)
print(externalLinks)
【爬虫实践】用递归获取网站的所有内链和外链相关推荐
- 网站SEO优化之如何发布外链
前言: 一直想着做SEO的事来提高自己博客的权重,外链等,也经常看些相关的文章,觉得这篇讲的不错,转载过来分享一下. 外链是指在别的网站导入自己网站的链接,或者是指除了自己网站的链接外,在其它网站留下 ...
- 物权法全文内容有哪些呢-广告外链_网站SEO优化中,关键词内链与外链如何规划?...
原创:白杨 全文2156字 预计阅读5分钟 大纲如下: 1.关键词是什么及分类说明 2.网站关键词内链如何规划布局? 3.网站关键词外链建设如何规划? 4.如何检测是否布局好? 关键词是什么及分类说明 ...
- html网页添加友链,网站内链、外链、友链操作方法
马上注册,结交更多SEO好友,可查看高清图片. 您需要 登录 才可以下载或查看,没有帐号?加入SEO研究中心 x 本帖最后由 李孝猛 于 2016-6-20 23:22 编辑 近期,我们已经把网站初步 ...
- 免费提升网站排名,用百度SEO外链工具!
作为一名网站运营者,想必你对SEO优化并不陌生.而外链作为提高网站权重和流量的重要手段,更是被广泛应用.今天,小编要介绍的就是一款非常优秀的外链工具--百度SEO蜘蛛精外链工具免费版. 一.什么是百度 ...
- 网站优化基础教程:发布外链常见的五种方式!
想要做好网站优化,外链的发布也是很重要的一环,如果您还没有做,建议您抓紧去做一下. 这篇文章发迹创业网就分享一下,常见的几种发布外链的方法. 1,锚文本 又叫做超链接,是指给关键词加一个链接,点击该关 ...
- 网站SEO优化之如何建设外链提升网站权重?
众所周知,网站SEO优化离不开外链的建设,帮助网站提升权重,从而提升企业品牌知名度和网站曝光率,为企业带来准确的访客,促进网站关键词排名,促进企业网络营销的发展.然而在实际的操作中,往往很多优化人员会 ...
- 爬虫小练习01—获取网站源码
第一步 明确自己需要爬取的网页网址URL https://bbs.zol.com.cn/ 第二步 引入requests库,使用request库发起请求 import requests url = &q ...
- 爬虫实践---抓取小说网站
电子书网站:http://www.7kanshu.net/ 对网页进行分析可知,玄幻奇幻排行武侠仙侠排行历史军事排行完本小说排行观察发现,历史军事和完本小说的时一致的,其余类别是一样的,所以进行分开处 ...
- python如何爬虫eps数据_Python爬虫如何通过post获取网站的数据?
最起码把你实际要post的字段贴出来吧, 比如说你在哪个框中填入那些数据, 点击哪个按钮 我没法在chrome中看到这个请求, 也是醉了, 最后我翻他的JS源代码, 找到了: function Get ...
最新文章
- 大学计算机科学系口号,各大学学院口号
- Linux 中 3 个文件打包上传和下载相关命令详解
- 金升阳5V开关电源LM25-23B05
- ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
- hdu4549 M斐波那契数列
- Spring如何解决循环依赖问题
- 用python控制键盘_【python黑科技-pyautogui】教你用python控制滑鼠与键盘
- 为 IDES471 激活中文
- Go将数字转换为字符串的正确姿势
- 嵌入式行业公司及所属产业
- 用金山打字通练习打字
- VMware Error | IP地址经常变更
- 求解会议安排问题A - RJ501求解会议安排问题
- 现场总线---can总线
- (软考高级、高项)信息系统项目管理师(第三版)过关经验
- c语言 sin1怎么写,c语言sin30怎么写
- 网站数据常见的获取途径有什么
- 【英语】美式元音 总结
- c语言从键盘输入5阶方阵,输入5×5阶的矩阵,编程实现: (1)求两条对角线上的各元素之和....
- 2018年广东工业大学文远知行杯新生程序设计竞赛 1012 只有我不在的世界β
热门文章
- c语言中英文翻译 毕业设计,c语言中英文翻译资料 毕业设计论文.doc
- 亚马逊、eBay、Wish、Lazada、Shoppe风控这么严格,还有必要做测评吗?
- 网页宽度打印出A4纸
- hdu 3833 YY's new problem(哈希)
- C++学习 2019-1-20
- 逐鹿工具显示服务器错误连接不上怎么解决,win7系统中安装逐鹿工具箱时提示“error launching installer”错误怎么解决 Lin...
- jquery css3问卷答题卡翻页动画效果
- 苹果ios15系统兼容哪些机型
- viper4android 5.0,VIPER4Android最新版本
- 【行研资料】2021中国物流科技发展报告——附下载