如何利用Scrapy框架实战提取百度首页热榜新闻的排名、标题和链接
一、安装Scrapy库
二、创建项目(以BaiduSpider为例)
scrapy startproject BaiduSpider
生成每个文件的功能:
二、 创建爬虫脚本(爬虫名:news)
scrapy genspider news www.baidu.com
命令执行成功后,spider目录中将生成news.py文件
(1)name:在同一个项目中,名字是唯一的,用来区分不同的spider。
(2)allowed_domains:允许爬取的域名,如果初始或后续请求的URL不是这个域名下的,则请求会被过滤掉,可以根据需要编辑或添加。
(3)start_urls:spider初始爬取的URL列表,可以根据需要编辑或添加。
(4)parse(self,response):解析返回的响应,提取数据或新的URL,response是请求start_urls后返回的响应。
三、修改settings脚本(位置:settings.py)
设置请求头中的User-Agent和不遵守Robots协议
四、完善爬虫(位置:news.py)
编写解析方法
五、 运行爬虫
正常运行爬虫命令
scrapy crawl news
不打印日志文件运行爬虫命令
scrapy crawl news --nolog
六、数据保存
6.1 修改items脚本(位置:items.py)
scrapy库提供Item对象来实现将爬取到的数据转换成结构化数据的功能。实现方法是定义Item类(继承scrapy.Item类),并定义类中的数据类型为scrapy.Filed字段。
6.2 编写解析方法(位置:news.py)
6.3 保存为JSON文件
scrapy crawl news -o news.json
命令执行成功后,BaiduSpider目录中将生成news.json文件
注意: 使用-o输出JSON文件时,会默认使用unicode编码,当内容为中文时,输出的JSON文件不便于查看。此时,可以在settings.py文件中修改默认的编码方式,即增加设置FEED_EXPORT_ENCODING = ‘utf-8’。