一、开发背景Python作为数据处理方面的一把好手,近年来的热度不断增长。网络爬虫可以说是Python最具代表性的应用之一,那么通过网络爬虫来学习Python以及网络和数据处理的相关内容可以说是再合适不过了。 Scrapy是由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。相比于传统的爬虫来说,基于scrapy框架的爬虫更加结构化,同时也更加高效,能完成更加复杂的爬取任务。 二、爬虫效果1、标题 2、内容 3、评论 4、日期,热度和ID 5、程序运行图 三、具体开发1、任务需求 1. 爬取网易,搜狐,凤凰和澎湃新闻网站的文章及评论 2. 新闻网页数目不少于10万页 3. 每个新闻网页及其评论能在1天内更新 2、功能设计 1. 设计一个网络爬虫,能够爬取指定网站的全部页面,并提取其中的文章及评论内容 2. 定时运行网络爬虫,实现每日更新数据 3、系统架构 首先简单介绍下scrapy框架,这是一个爬虫框架 绿线是数据流向, (1)首先从初始URL 开始,Scheduler 会将其交给 Downloader 进行下载, (2)下载之后会交给 Spider 进行分析,这里的spider就是爬虫的核心功能代码 (3)Spider分析出来的结果有两种:一种是需要进一步抓取的链接,它们会通过middleware传回 Scheduler ;另一种是需要保存的数据,送入Item Pipeline ,进行处理和存储 (4)最后将所有数据输出并保存为文件 4、实际项目 (1)项目结构 可以看到,NewsSpider-master是完整项目文件夹,下面存放有对应各个网站的爬虫启动脚本debug_xx.py,scrapyspider文件夹存放scrapy框架所需的相关文件,spiders文件夹存放实际的爬虫代码 (2)爬虫引擎 以网易新闻的爬虫news_163.py为例,简要说明部分核心代码: ①定义一个爬虫类:
②网页内容分析模块根据不同内容的Xpath路径从页面中提取内容,由于网站在不同时间的页面结构不同,因此按照不同页面版式划分成几个if判断句块;
根据正则表达式匹配页面内容中的日期信息:
其他函数:
(3)运行爬虫并格式化存储 ①在settings.py中进行配置
②运行爬虫并保存新闻内容 爬取下来的新闻内容及评论需要格式化存储,如果在IDE中运行debug脚本,则效果如下: 爬取后会保存为.csv文件,使用Excel打开即可查看: ③如果需要将评论单独提取出来,可以使用csv_process.py,效果如下: 四、其他补充暂时没有 |
|
来自: 二楼202 > 《python学习》