Python爬虫-基于深度优先策略的百度百科爬虫
2017-10-26 16:57
316 查看
深度优先策略:优先往纵向挖掘深入,直到到达指定的深度或者该节点不存在邻接节点,才会访问第二条路。
广度优先策略:先访问完一个深度的所有节点,再访问更深一层的所有节点。
简单的看:
深度优先爬虫路径:A-B-E-F-C-D
广度优先爬虫路径:A-B-C-D-E-F
爬取深度为2时的运行结果:
另外还尝试了深度为3的爬虫,爬了六万个就提示写不进去,暂且暂停了。后面继续学习广度优先的爬虫。
广度优先策略:先访问完一个深度的所有节点,再访问更深一层的所有节点。
简单的看:
深度优先爬虫路径:A-B-E-F-C-D
广度优先爬虫路径:A-B-C-D-E-F
import requests import re import time exist_urls=[] headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36', } #定义一个用来获取页面所有符合条件的链接函数 def scrapypy(url): try: response=requests.get(url=url,headers=headers) response.encoding='UTF-8' html=response.text link_lists=re.findall('.*?<a target=_blank href="/item/([^:#=<>]*?)".*?</a>',html) return link_lists except Exception as e: print(e) print('下载失败:'+url) return None finally: exist_urls.append(url) #主函数用来定义输出格式,当爬取深度小于三层时,递归调用主函数,继续爬取第二层的所有链接 def main(start_url,depth=1): count=0 link_lists=scrapypy(start_url) if link_lists: unique_lists=list(set(link_lists)-set(exist_urls)) for unique_list in unique_lists: unique_list='https://baike.baidu.com/item/'+unique_list count=count+1 output='No.'+str(count)+'\t Depth:'+str(depth)+'\t'+start_url+'======>'+unique_list+'\n' print(output) with open('title.txt','a+') as f: f.write(output) f.close() if depth<2: main(unique_list,depth+1) if __name__=='__main__': t1=time.time() start_url='https://baike.baidu.com/item/%E7%99%BE%E5%BA%A6%E7%99%BE%E7%A7%91' main(start_url) t2=time.time() print('总时间',t2-t1)
爬取深度为2时的运行结果:
另外还尝试了深度为3的爬虫,爬了六万个就提示写不进去,暂且暂停了。后面继续学习广度优先的爬虫。
相关文章推荐
- Python 简易网络爬虫的编写——抓取任意页面数目百度百科内容
- 基于Python,scrapy,redis的分布式爬虫实现框架
- 基于python爬虫数据处理(详解)
- python 爬虫——针对query爬取百度百科页面
- Python爬虫实例——基于BeautifulSoup和requests实现
- Python日记:基于Scrapy的爬虫实现
- 使用Python的BeautifulSoup库实现一个可以爬取1000条百度百科数据的爬虫
- 基于python的网络爬虫---抓取p站图片
- 基于Python的网络爬虫
- 从网络上收集的爬虫工具,推荐基于python的工具
- python爬虫进阶(九):基于Page Rank的顺序调整
- Python实现基于协程的异步爬虫
- [Python爬虫]爬取百度百科python相关的1000个页面
- 基于python的爬虫(一)
- 基于python的豆瓣“我看过的电影”的爬虫
- 天气实时显示系统--基于python网络爬虫的树莓派与Arduino蓝牙通信
- python爬虫︱百度百科的requests请求、百度URL格式、网页保存、爬虫模块
- 基于Python的爬虫项目一——城市天气
- 基于Python+scrapy+redis的分布式爬虫实现框架
- 基于百度API接口的python数据爬虫解析1【笔记】