一、需求:爬取天善智能网站中的所有网课的信息,包括网课名称、学习人数以及链接。

二、Scrapy实现思路:使用传统的方法,找寻每个网课的URL规律,使用for循环来循环爬取网课网页的信息。

三、URL及源代码分析:

1、URL分析,注意到网课的URL由+网课编号组成,不断更换网课编号进行测试注意到,网课编号是连续的且最大值为294(截至发博文的日期)。

2、源代码分析,观察网课网页中的源代码,找寻其中的网课名称、学习人数以及网课链接所在的源码标签结构,若源码中出现多次,则选取最易构建XPath表达式的:

1)网课名称

2)学习人数

3)网课链接

四、编写代码:

1、items.py:

import scrapy
class TsprojectItem(scrapy.Item):#网课标题title=scrapy.Field()#网课链接link=scrapy.Field()#网课学习人数stu=scrapy.Field()

2、pipelines.py:

class TsprojectPipeline(object):#设置爬取的数据存储在TXT文件中def __init__(self):self.fh=open("E:/Scrapy/result/1.txt","a")#处理爬取的数据def process_item(self, item, spider):print(item["title"])print(item["link"])print(item["stu"])print("------------")self.fh.write(item["title"][0]+"\n"+item["link"][0]+"\n"+item["stu"][0]+"\n"+"------------"+"\n")return item#爬取结束后关闭文件def close_spider(self):self.fh.close()

3、settings.py:

ITEM_PIPELINES = {'tsproject.pipelines.TsprojectPipeline': 300,
}

4、tsSpider.py(创建的爬虫文件):

import scrapy
from tsproject.items import TsprojectItem
from scrapy.http import Requestclass TsspiderSpider(scrapy.Spider):name = 'tsSpider'allowed_domains = ['hellobi.com']#起始爬虫网址start_urls = ['https://edu.hellobi.com/course/1']#解析数据方法def parse(self, response):item=TsprojectItem()#设置XPath表达式进行爬取item["title"]=response.xpath("//ol[@class='breadcrumb']/li[@class='active']/text()").extract()item["link"]=response.xpath("//ul[@class='nav nav-tabs']/li[@class='active']/a/@href").extract()item["stu"] = response.xpath("//span[@class='course-view']/text()").extract()#传递itemyield  itemfor i in range(0,295):# 构建新url进行传递,并设定解析函数仍为parseurl="https://edu.hellobi.com/course/"+str(i)yield Request(url,callback=self.parse)

五、运行结果:

1)cmd中的运行结果(本博文使用PowerShell代替):

2)文件中的运行结果:

Python数据爬虫学习笔记(19)Scrapy天善智能网课信息爬虫相关推荐

  1. Python数据科学学习笔记之——机器学习专题

    机器学习专题 1.专题:朴素贝叶斯分类 1.1.朴素贝叶斯分类 朴素贝叶斯分类器建立在贝叶斯分类方法的基础上,其数学基础是贝叶斯定理--一个描述统计量条件概率关系的公式.在贝叶斯分类中,我们希望确定一 ...

  2. Python数据科学学习笔记之——Matplotlib数据可视化

    Matplotlib 数据可视化 1.Matplotlib 常用技巧 1.1.导入 Matplotlib import matplotlib as mpl import matplotlib.pypl ...

  3. 建立数组并写入数据_VBA学习笔记19:数组1

    学习资源:<Excel VBA从入门到进阶>第20集 by兰色幻想 一.什么是VBA数组? VBA数组就是储存一组数据的数据空间,数据类型可以数字,可以是文本,可以是对象,也可以是VBA数 ...

  4. Python数据可视化学习笔记:第一章 关联图 第四节 使用Python绘制一般气泡图

    前言 声明:这个系列的博文都是我自己学习所得的东西,秉承着每天进步一点点的理念进行学习,我参考的课程是<菊安酱与菜菜的Python机器学习可视化50图>,使用的Python版本为3.6.4 ...

  5. Python自然语言处理学习笔记(19):3.3 使用Unicode进行文字处理

    3.3 Text Processing with Unicode 使用Unicode进行文字处理   Our programs will often need to deal with differe ...

  6. 爬虫学习笔记——Selenium爬取淘宝商品信息并保存

    在使用selenium来模拟浏览器操作,抓取淘宝商品信息前,先完成一些准备工作. 准备工作:需要安装selenium,pyquery,以及Chrome浏览器并配置ChromeDriver. 安装sel ...

  7. 《Python自动化》学习笔记:百度云智能实现提取身份证信息

    问题 由于最近想搞深度学习,和AI这块,计算机算力不够.而且最近经常会碰到一些要用很棘手的算法求解复杂模型的问题. 由于我只对问题的结果有兴趣,而对具体的实现过程不在意,我注意到百度智能云有许多的应用 ...

  8. Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】

    Python3 爬虫学习笔记第九章 -- [数据储存系列 - 文件储存] 文章目录 [9.1]TXT 文本存储 [9.1.1]基本示例 [9.1.2]打开方式 [9.2]JSON 文件存储 [9.2. ...

  9. Python3 爬虫学习笔记 C16【数据储存系列 — Redis】

    Python3 爬虫学习笔记第十六章 -- [数据储存系列 - Redis] 文章目录 [16.1]关于 Redis [16.2]使用 Redis [16.3]Key(键)操作 [16.4]Strin ...

  10. Python3 爬虫学习笔记 C11【数据储存系列 — MongoDB】

    Python3 爬虫学习笔记第十一章 -- [数据储存系列 - MongoDB] 文章目录 [11.1]关于 MongoDB [11.2]MongoDB 基本操作语句 [11.3]连接 MongoDB ...

最新文章

  1. 安卓中实现两端对齐,中间fill_parent的方法
  2. C语言工程实践-简单文本编辑器
  3. mysql数据库模型生成表_PowerDesigner逆向生成MYSQL数据库表结构总结
  4. 剑指offer-11.数值的整数次方实现power
  5. python map、filter、reduce
  6. sun.misc.Unsafe苦难告诉我们什么
  7. MapReduce 计算框架如何运作
  8. 【转】Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)...
  9. 【转】移动前端工作的那些事---UE/UI架构原型搭建和前端设计之UE架构原型搭建...
  10. 基于SSM的宠物商城系统
  11. python文字转语音的五种方式win32com,pyttsx3,百度api,可使用自己的声音
  12. 一些手机APP默认的文件保存位置
  13. MyBatis-plus从入门到精通(全)
  14. mesh 协调器 路由器_请TI技术支持和大神指点下,关于zigbee组建mesh路由网络的问题,谢谢!...
  15. 利用栈进行数制转换和括号匹配(C语言)
  16. Apollo自动驾驶之高精地图
  17. 计算机没考好的检讨书300百以上,考试反思检讨书300字范文7篇
  18. java内存(java内存溢出的几种原因和解决办法)
  19. 深入探讨PageRank
  20. 2017年5月历史文章汇总

热门文章

  1. 阿里巴巴入选的JCP最高执行委员会,何方神圣?
  2. 懒惰删除JAVA,Redis的新特性懒惰删除Lazy Free详解
  3. Redis Master/Salve Replication(主从复制模式)
  4. ssm搭建整合,这一篇你直接拷走就是一个搭好的框架,前后端可分离,可不分离
  5. 【Unity3D】个人开发台球小游戏
  6. 关于#1-D:last line of file ends without a newline警告的解决办法(stm32)
  7. 计算机对操作系统函数的调用失败,win8系统电脑弹出提示“远程过程调用失败且未执行”的修复方法...
  8. Win10 关机显示程序没有响应
  9. bootstrap—预定义样式风格
  10. 每天多抽出一分钟看书,让你的什么更加精彩。1111节当当购书码