26个数据分析案例——第五站:基于Scrapy的架构的数据采集( 二 )


重新运行项目 。
scrapy crawl MySpider
7、如果您得到了和我一样的结果,恭喜你已经成功的爬取到了网页中的数据 。但是只能够读取到一页的数据,下面我们将继续修改代码,实现自动翻页,这里使用xpath判断当页码标签中是否存在包含下一页的标签,如果存在就获取该标签内容,之后组合成下一页的网页地址并通过.()方法返回parse()函数继续爬取该页面的课程信息,直到页码标签中不存在下一页标签后停止,修改.py文件
# -*- coding: utf-8 -*-import scrapy# 导入选择器from scrapy.selector import Selector# 导入items.py文件中定义的类from InternetWorm.items import CourseItempageIndex = 0class MyspiderSpider(scrapy.Spider):name = 'MySpider'allowed_domains = ['imooc.com']start_urls = ['http://www.imooc.com/course/list']def parse(self, response):sel = Selector(response)# 使用xpath的方式选取所有列表内容sels = sel.xpath('//a[@class="e925-7046-7cf1-6c53 item free "]')# 实例一个容器保存爬取的信息item = CourseItem()index = 0global pageIndexpageIndex += 1print('第' + str(pageIndex) + '页 ')print('----------------------------------------------')# 遍历所有列表for box in sels:# 获取课程标题item['title'] = box.xpath('.//p[@class="cfc3-5621-1f0d-e77c title ellipsis2"]/text()').extract()[0].strip()# 获取标题图片地址item['image_url'] = "http:"+box.xpath('.//div[@class="2421-ec7b-e925-7046 img"]/@style').extract()[0].strip()[23:-2]# 获取课程性质item['properties'] = box.xpath('.//span[@class="5621-1f0d-e77c-a8b4 l"]/text()').extract()[0].strip()# 获取课程阶段item['stage'] = box.xpath('.//p[@class="5936-2421-ec7b-e925 one"]/text()').extract()[0].strip().split(" · ")[0]# 获取课程报名人数item['enrollment'] = box.xpath('.//p[@class="5621-1f0d-e77c-a8b4 one"]/text()').extract()[0].strip().split(" · ")[1][:-3]index += 1# 迭代处理item,返回一个生成器yield itemnext = u'下一页'url = response.xpath("//a[contains(text(),'" + next + "')]/@href").extract()if url:# 将信息组合成下一页的urlpage = 'http://www.imooc.com' + url[0]# 返回urlyield scrapy.Request(page, callback=self.parse)pass
重新执行项目 。
scrapy crawl MySpider
最后还能够将爬取到的数据保存到文件中 。
scrapy crawl MySpider -o data.csv
后续案例持续更新
01 基于的HBase冠字号查询系统
02基于Hive的民航客户价值分析
03 基于的药店销售数据分析
04基于Flume与Kafka的web服务器日志数据采集
05 基于的架构的数据采集
06 Linux操作系统实时日志采集并处理
【26个数据分析案例——第五站:基于Scrapy的架构的数据采集】07 医疗行业案例-中医病症辩证关联规则分析
08教育行业案例-高校学生生活数据分析
10 娱乐行业案例-广告收益回归预测模型
11网络行业案例-网站访问行为分析
12零售行业案例-店铺热门商品实时统计
13 营业额数据可视化
14金融行业案例-基于上市公司股票信息及其衍生变量的金融数据分析
15银行信用卡风险数据可视化
16 滴滴出行城市运营分析
17 幸福指数可视化
18 员工主动离职预警模型
19 歌手推荐模型
20 2020新冠肺炎疫情数据分析
21 淘宝购物狂欢节数据分析
22 共享单车数据分析
23人脸检测系统
24服装分拣系统