1. CSDN学院课程数据-写在前面

今天又要抓取一个网站了,选择恐惧症使得我不知道该拿谁下手,找来找去,算了,还是抓取CSDN学院吧,CSDN学院的网站为 https://edu.csdn.net/courses 我看了一下这个网址,课程数量也不是很多,大概有 6000+ 门课程,数据量不大,用单线程其实就能很快的爬取完毕,不过为了秒爬,我还是选用了一个异步数据操作。

2. CSDN学院课程数据-分析页码

还是需要好好的分析一下页码规律

https://edu.csdn.net/courses/p2

https://edu.csdn.net/courses/p3

https://edu.csdn.net/courses/p4

... ...

https://edu.csdn.net/courses/p271

页码还是非常有规律的,直接编写代码就可以快速的爬取下来。出于人文关怀,我还是把协程数限制在3,要不顺发271个请求还是有点攻击的性质了。这样不好,不符合我们的精神。

import asyncio

import aiohttp

from lxml import etree

sema = asyncio.Semaphore(3)

async def get_html(url):

headers = {

"user-agent": "自己找个UA即可"

}

'''

本文来自 梦想橡皮擦 的博客

地址为: https://blog.csdn.net/hihell

可以任意转载,但是希望给我留个版权。

'''

print("正在操作{}".format(url))

async with aiohttp.ClientSession() as s:

try:

async with s.get(url, headers=headers, timeout=3) as res:

if res.status==200:

html = await res.text()

html = etree.HTML(html)

get_content(html) # 解析网页

print("数据{}插入完毕".format(url))

except Exception as e:

print(e)

print(html)

time.sleep(1)

print("休息一下")

await get_html(url)

async def x_get_html(url):

with(await sema):

await get_html(url)

if __name__ == '__main__':

url_format = "https://edu.csdn.net/courses/p{}"

urls = [url_format.format(index) for index in range(1, 272)]

loop = asyncio.get_event_loop()

tasks = [x_get_html(url) for url in urls]

request = loop.run_until_complete(asyncio.wait(tasks))

3. CSDN学院课程数据-解析网页函数

网页下载到了之后,需要进行二次处理,然后才可以把他放入到mongodb中,我们只需要使用lxml库即可

def get_content(html):

course_item = html.xpath("//div[@class='course_item']")

data = []

for item in course_item:

link = item.xpath("./a/@href")[0] # 获取课程详情的链接,方便我们后面抓取

tags = item.xpath(".//div[@class='titleInfor']/span[@class='tags']/text()") # 获取标签

title = item.xpath(".//div[@class='titleInfor']/span[@class='title']/text()")[0] # 获取标题

num = item.xpath(".//p[@class='subinfo']/span/text()")[0] # 学习人数

subinfo = item.xpath(".//p[@class='subinfo']/text()")[1].strip() # 作者

price = item.xpath(".//p[contains(@class,'priceinfo')]/i/text()")[0].strip() # 作者

data.append({

"title":title,

"link":link,

"tags":tags,

"num":num,

"subinfo":subinfo,

"price":price

})

collection.insert_many(data)

4. CSDN学院课程数据-数据存储

数据保存到mongodb中,完成。

没有特别突出的地方,简单易操作。

python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取相关推荐

  1. python数据抓取课程_Python爬虫入门教程 21-100 网易云课堂课程数据抓取

    写在前面 今天咱们抓取一下网易云课堂的课程数据,这个网站的数据量并不是很大,我们只需要使用requests就可以快速的抓取到这部分数据了. 你第一步要做的是打开全部课程的地址,找出爬虫规律, 地址如下 ...

  2. python自动抓包手机_Python爬虫入门:教你通过Fiddler进行手机抓包!

    哟哟哟~ hi起来 everybody Python爬虫入门:教你通过Fiddler进行手机抓包! 今天要说说怎么在我们的手机抓包 进群:700341555获取Python爬虫入门学习资料! Pyth ...

  3. python 喜马拉雅_Python爬虫入门教程14:喜马拉雅有声书音频爬取

    基本开发环境????Python 3.6 Pycharm 相关模块的使用????import requests import os 安装Python并添加到环境变量,pip安装需要的相关模块即可. 一 ...

  4. python爬b站评论_Python爬虫入门教程 32-100 B站博人传评论数据抓取 scrapy

    1. B站博人传评论数据爬取简介 今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看.网址 ...

  5. python表情包斗图_Python爬虫入门教程 13-100 斗图啦表情包多线程爬取

    斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...

  6. python爬图片代码大全_爬虫入门教程⑩— 用漂亮的图表展示爬取到的数据

    经过了前面的努力,我们成功获取到了数据,并且学会了保存,但是只是用网页展示出来,是不是有一些不够美观呢? 所以本节的内容是:数据的可视化.拿到了数据却不能使其简单易懂并且足够突出,那就是不是好的数据工 ...

  7. 推荐一部python教程_Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  8. 爬虫python入门_python爬虫入门教程有哪些?适合的只有这三个

    python爬虫是现在包括以后一种很重要的获取数据的方式. 当然,也因为网络爬虫本身也很有趣,所以很多人了解过一次爬虫后,就产生了浓厚的兴趣. 但是,想学python爬虫的话,应该看什么python爬 ...

  9. Python爬虫入门教程 21-100 网易云课堂课程数据抓取

    写在前面 今天咱们抓取一下网易云课堂的课程数据,这个网站的数据量并不是很大,我们只需要使用requests就可以快速的抓取到这部分数据了. 你第一步要做的是打开全部课程的地址,找出爬虫规律, 地址如下 ...

最新文章

  1. 自建ELK迁移阿里云日志服务
  2. 家用、商用、工业交换机的用途与区别
  3. Linux下的分区工具
  4. python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...
  5. VSFTPD Centos 7.6 _配置篇
  6. Python | 多种编码文件(中文)乱码问题解决
  7. leetcode -- Maximum Subarray
  8. python在直方图上画折线图_Python 中 plt 画柱状图和折线图
  9. VarianceThreshold
  10. 介绍几种初学者学习电脑入门知识的方法
  11. 自动化办公:1、文件自动化处理邮件批量处理
  12. 夏季干燥口腔溃疡频发怎么办
  13. 软件测试面试,如何自我介绍?
  14. win7 桌面计算机不显示器,Win7电脑显示器模糊怎么办?
  15. deepin网速慢 自己摸索 已解决
  16. K8S中删除pod,又被重新创建的问题解决
  17. 互联网时代的B2B电商系统到底意味着什么
  18. 用微博帐号登录出错了! 对第三方应用进行授权时出现错误,请您联系第三方应用的开发者: 十五发芽或者稍后再试。 错误码:21322 重定向地址不匹配
  19. 海康工业摄像头调用(linux基于python和opencv)
  20. 中国IT教育培训年度评选颁奖

热门文章

  1. c4d如何把文字贴在物体表面_一篇文章带你了解C4D布光技巧
  2. Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式
  3. 洛谷 P4009 汽车加油行驶问题 题解
  4. 【JQuery】jQuery中的常用方法小结
  5. 解决Failed to load the JNI shared library xxx/xxx/jvm.dll 错误
  6. 基于角色的访问控制模型(RBAC)——学习笔记
  7. python面试题之解释一下python的and-or语法
  8. window.postMessage 跨窗口,跨iframe javascript 通信
  9. SpringBoot和SpringCloud面试题
  10. PyTorch 1.0 中文文档:CUDA 语义