python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取
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学院课程数据抓取相关推荐
- python数据抓取课程_Python爬虫入门教程 21-100 网易云课堂课程数据抓取
写在前面 今天咱们抓取一下网易云课堂的课程数据,这个网站的数据量并不是很大,我们只需要使用requests就可以快速的抓取到这部分数据了. 你第一步要做的是打开全部课程的地址,找出爬虫规律, 地址如下 ...
- python自动抓包手机_Python爬虫入门:教你通过Fiddler进行手机抓包!
哟哟哟~ hi起来 everybody Python爬虫入门:教你通过Fiddler进行手机抓包! 今天要说说怎么在我们的手机抓包 进群:700341555获取Python爬虫入门学习资料! Pyth ...
- python 喜马拉雅_Python爬虫入门教程14:喜马拉雅有声书音频爬取
基本开发环境????Python 3.6 Pycharm 相关模块的使用????import requests import os 安装Python并添加到环境变量,pip安装需要的相关模块即可. 一 ...
- python爬b站评论_Python爬虫入门教程 32-100 B站博人传评论数据抓取 scrapy
1. B站博人传评论数据爬取简介 今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看.网址 ...
- python表情包斗图_Python爬虫入门教程 13-100 斗图啦表情包多线程爬取
斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...
- python爬图片代码大全_爬虫入门教程⑩— 用漂亮的图表展示爬取到的数据
经过了前面的努力,我们成功获取到了数据,并且学会了保存,但是只是用网页展示出来,是不是有一些不够美观呢? 所以本节的内容是:数据的可视化.拿到了数据却不能使其简单易懂并且足够突出,那就是不是好的数据工 ...
- 推荐一部python教程_Python爬虫入门教程:博客园首页推荐博客排行的秘密
1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...
- 爬虫python入门_python爬虫入门教程有哪些?适合的只有这三个
python爬虫是现在包括以后一种很重要的获取数据的方式. 当然,也因为网络爬虫本身也很有趣,所以很多人了解过一次爬虫后,就产生了浓厚的兴趣. 但是,想学python爬虫的话,应该看什么python爬 ...
- Python爬虫入门教程 21-100 网易云课堂课程数据抓取
写在前面 今天咱们抓取一下网易云课堂的课程数据,这个网站的数据量并不是很大,我们只需要使用requests就可以快速的抓取到这部分数据了. 你第一步要做的是打开全部课程的地址,找出爬虫规律, 地址如下 ...
最新文章
- 自建ELK迁移阿里云日志服务
- 家用、商用、工业交换机的用途与区别
- Linux下的分区工具
- python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...
- VSFTPD Centos 7.6 _配置篇
- Python | 多种编码文件(中文)乱码问题解决
- leetcode -- Maximum Subarray
- python在直方图上画折线图_Python 中 plt 画柱状图和折线图
- VarianceThreshold
- 介绍几种初学者学习电脑入门知识的方法
- 自动化办公:1、文件自动化处理邮件批量处理
- 夏季干燥口腔溃疡频发怎么办
- 软件测试面试,如何自我介绍?
- win7 桌面计算机不显示器,Win7电脑显示器模糊怎么办?
- deepin网速慢 自己摸索 已解决
- K8S中删除pod,又被重新创建的问题解决
- 互联网时代的B2B电商系统到底意味着什么
- 用微博帐号登录出错了! 对第三方应用进行授权时出现错误,请您联系第三方应用的开发者: 十五发芽或者稍后再试。 错误码:21322 重定向地址不匹配
- 海康工业摄像头调用(linux基于python和opencv)
- 中国IT教育培训年度评选颁奖
热门文章
- c4d如何把文字贴在物体表面_一篇文章带你了解C4D布光技巧
- Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式
- 洛谷 P4009 汽车加油行驶问题 题解
- 【JQuery】jQuery中的常用方法小结
- 解决Failed to load the JNI shared library xxx/xxx/jvm.dll 错误
- 基于角色的访问控制模型(RBAC)——学习笔记
- python面试题之解释一下python的and-or语法
- window.postMessage 跨窗口,跨iframe javascript 通信
- SpringBoot和SpringCloud面试题
- PyTorch 1.0 中文文档:CUDA 语义