当前位置:   article > 正文

爬取一个网站_通过一个页面找整个网站

通过一个页面找整个网站

如果一个页面有10个链接,网站上有5个页面深度(中等规模网站的主流深度),如果要采集整个网站,一共需要采集的网页数量就是10^5,即100000个页面,因为很少有网站会涉及到这么多的网页,因为有很大一部分是因为网页重复的原因,为了避免采集两次,链接去重很重要

  1. from urllib.request import urlopen
  2. from bs4 import BeautifulSoup
  3. import re
  4. pages=set()
  5. def getLinks(pageUrl):
  6. global pages
  7. html=urlopen("https://en.wikipedia.org"+pageUrl)
  8. bsObj=BeautifulSoup(html) #创建一个BeautifulSoup对象
  9. for link in bsObj.findAll("a",href=re.compile("^(/wiki/)")):
  10. if 'href' in link.attrs: #找出link的所有属性,判断"href"这个开头为wiki是否在这个字典里
  11. if link.attrs['href'] not in pages:
  12. #我们遇到了新的页面
  13. newPage=link.attrs['href']
  14. print(newPage)#打印出新的页面
  15. pages.add(newPage)#加入到全局变量的集合中
  16. getLinks(newPage)#递归处理新的链接
  17. getLinks("") #空的url
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/845323
推荐阅读
相关标签
  

闽ICP备14008679号