【爬虫实践】用递归获取网站的所有内链和外链

环境: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)

【爬虫实践】用递归获取网站的所有内链和外链相关推荐

  1. 网站SEO优化之如何发布外链

    前言: 一直想着做SEO的事来提高自己博客的权重,外链等,也经常看些相关的文章,觉得这篇讲的不错,转载过来分享一下. 外链是指在别的网站导入自己网站的链接,或者是指除了自己网站的链接外,在其它网站留下 ...

  2. 物权法全文内容有哪些呢-广告外链_网站SEO优化中,关键词内链与外链如何规划?...

    原创:白杨 全文2156字 预计阅读5分钟 大纲如下: 1.关键词是什么及分类说明 2.网站关键词内链如何规划布局? 3.网站关键词外链建设如何规划? 4.如何检测是否布局好? 关键词是什么及分类说明 ...

  3. html网页添加友链,网站内链、外链、友链操作方法

    马上注册,结交更多SEO好友,可查看高清图片. 您需要 登录 才可以下载或查看,没有帐号?加入SEO研究中心 x 本帖最后由 李孝猛 于 2016-6-20 23:22 编辑 近期,我们已经把网站初步 ...

  4. 免费提升网站排名,用百度SEO外链工具!

    作为一名网站运营者,想必你对SEO优化并不陌生.而外链作为提高网站权重和流量的重要手段,更是被广泛应用.今天,小编要介绍的就是一款非常优秀的外链工具--百度SEO蜘蛛精外链工具免费版. 一.什么是百度 ...

  5. 网站优化基础教程:发布外链常见的五种方式!

    想要做好网站优化,外链的发布也是很重要的一环,如果您还没有做,建议您抓紧去做一下. 这篇文章发迹创业网就分享一下,常见的几种发布外链的方法. 1,锚文本 又叫做超链接,是指给关键词加一个链接,点击该关 ...

  6. 网站SEO优化之如何建设外链提升网站权重?

    众所周知,网站SEO优化离不开外链的建设,帮助网站提升权重,从而提升企业品牌知名度和网站曝光率,为企业带来准确的访客,促进网站关键词排名,促进企业网络营销的发展.然而在实际的操作中,往往很多优化人员会 ...

  7. 爬虫小练习01—获取网站源码

    第一步 明确自己需要爬取的网页网址URL https://bbs.zol.com.cn/ 第二步 引入requests库,使用request库发起请求 import requests url = &q ...

  8. 爬虫实践---抓取小说网站

    电子书网站:http://www.7kanshu.net/ 对网页进行分析可知,玄幻奇幻排行武侠仙侠排行历史军事排行完本小说排行观察发现,历史军事和完本小说的时一致的,其余类别是一样的,所以进行分开处 ...

  9. python如何爬虫eps数据_Python爬虫如何通过post获取网站的数据?

    最起码把你实际要post的字段贴出来吧, 比如说你在哪个框中填入那些数据, 点击哪个按钮 我没法在chrome中看到这个请求, 也是醉了, 最后我翻他的JS源代码, 找到了: function Get ...

最新文章

  1. 大学计算机科学系口号,各大学学院口号
  2. Linux 中 3 个文件打包上传和下载相关命令详解
  3. 金升阳5V开关电源LM25-23B05
  4. ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
  5. hdu4549 M斐波那契数列
  6. Spring如何解决循环依赖问题
  7. 用python控制键盘_【python黑科技-pyautogui】教你用python控制滑鼠与键盘
  8. 为 IDES471 激活中文
  9. Go将数字转换为字符串的正确姿势
  10. 嵌入式行业公司及所属产业
  11. 用金山打字通练习打字
  12. VMware Error | IP地址经常变更
  13. 求解会议安排问题A - RJ501求解会议安排问题
  14. 现场总线---can总线
  15. (软考高级、高项)信息系统项目管理师(第三版)过关经验
  16. c语言 sin1怎么写,c语言sin30怎么写
  17. 网站数据常见的获取途径有什么
  18. 【英语】美式元音 总结
  19. c语言从键盘输入5阶方阵,输入5×5阶的矩阵,编程实现: (1)求两条对角线上的各元素之和....
  20. 2018年广东工业大学文远知行杯新生程序设计竞赛 1012 只有我不在的世界β

热门文章

  1. c语言中英文翻译 毕业设计,c语言中英文翻译资料 毕业设计论文.doc
  2. 亚马逊、eBay、Wish、Lazada、Shoppe风控这么严格,还有必要做测评吗?
  3. 网页宽度打印出A4纸
  4. hdu 3833 YY's new problem(哈希)
  5. C++学习 2019-1-20
  6. 逐鹿工具显示服务器错误连接不上怎么解决,win7系统中安装逐鹿工具箱时提示“error launching installer”错误怎么解决 Lin...
  7. jquery css3问卷答题卡翻页动画效果
  8. 苹果ios15系统兼容哪些机型
  9. viper4android 5.0,VIPER4Android最新版本
  10. 【行研资料】2021中国物流科技发展报告——附下载