python爬虫之数据爬取项目实例
python爬虫之数据爬取项目实例
- 一、scrapy数据爬取
- (一)前期准备
- (二)目标:
- (三)步骤:
- 1、创建项目:
- 2、创建爬虫:
- 3、打开项目:
- 4、创建启动程序:
- 5、编写爬虫:
- 6、启动测试:
一、scrapy数据爬取
(一)前期准备
scrapy安装(略)
(二)目标:
1、网页url:https://ke.qq.com/course/list?mt=1001&page=1
(tx课堂的具体课程网页)
2、爬取分页1-20
3、爬取字段:
course = scrapy.Field() #课程名称 ./h4/a/text()
schedule = scrapy.Field() #课程进度 ./div[1]/span/text()
company = scrapy.Field() #开课机构 ./div[1]/a/text()
pay = scrapy.Field() #费用 ./div[2]/span[1]/text()
hot = scrapy.Field() #热度 ./div[2]/span[2]/text()
(三)步骤:
1、创建项目:
在scrapyProject目录下创建scrapy项目:
D:…\scrapyProject>scrapy startproject ke
2、创建爬虫:
D:…\scrapyProject>cd ke
D:…\scrapyProject\boss>scrapy genspider keLesson ke.qq.com
3、打开项目:
选择scrapyProject目录下的ke项目
注意:不要打开成ke子目录中的ke
4、创建启动程序:
创建一个run.py文件并添加启动命令`
from scrapy.cmdline import execute
execute(["scrapy", "crawl", "keLesson"])
5、编写爬虫:
keLesson.py编写:
import scrapy
from ke.items import KeItemclass KelessonSpider(scrapy.Spider):name = 'keLesson'# 须是爬取网页的网站域名allowed_domains = ['ke.qq.com']# 分页爬取1-20的网页地址urlsdef start_requests(self):for i in range(1,20):url = 'https://ke.qq.com/course/list?mt=1001&page={}'.format(i) #爬虫域名yield scrapy.Request(url=url)def parse(self, response):li_list = response.xpath("//ul[@class='course-card-list']/li")items = []for li in li_list:course = li.xpath("./h4/a/text()").extract_first() # 课程名称 ./h4/a/text()schedule = li.xpath("./div[1]/span/text()").extract_first() # 课程进度 ./div[1]/span/text()company = li.xpath("./div[1]/a/text()").extract_first() # 开课机构 ./div[1]/a/text()pay = li.xpath("./div[2]/span[1]/text()").extract_first() # 费用 ./div[2]/span[1]/text()hot = li.xpath("./div[2]/span[2]/text()").extract_first() # 热度 ./div[2]/span[2]/text()hot = hot.replace('\n', '')hot = hot.strip()item = KeItem()item['course'] = courseitem['schedule'] = scheduleitem['company'] = companyitem['pay'] = payitem['hot'] = hotitems.append(item)return items
items.py编写
import scrapyclass KeItem(scrapy.Item):course = scrapy.Field() #课程名称 ./h4/text()schedule = scrapy.Field() #课程进度 ./div[1]/span/text()company = scrapy.Field() #开课机构 ./div[1]/a/text()pay = scrapy.Field() #费用 ./div[2]/span[1]/text()hot = scrapy.Field() #热度 ./div[2]/span[2]/text()
pipelines.py编写
from itemadapter import ItemAdapterclass KePipeline:def process_item(self, item, spider):with open('keLesson_info.txt', 'a') as f:f.write(item['course']+';'+item['schedule']+';'+item['company']+';'+item['pay']+';'+item['hot']+'\n')
注意:在setting.py中启用管道
6、启动测试:
然后在run.py运行,测试是否可以爬取到指定的网页
scrapy遵守robot协议,robots.txt这个文件中规定了目标站点允许的爬虫机器爬取的范围,所以,我们就需要去settings里面设置
ROBOTSTXT_OBEY = True
修改为
ROBOTSTXT_OBEY = False
最终可以得到keLesson_info.txt
python爬虫之数据爬取项目实例相关推荐
- Python爬虫——Ajax数据爬取
前言 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面数据,但使用requests得到的结果并没有.这是因为在requests获得 ...
- Python爬虫系列之爬取微信公众号新闻数据
Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...
- Python爬虫系列之爬取某奢侈品小程序店铺商品数据
Python爬虫系列之爬取某奢侈品小程序店铺商品数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学 ...
- python爬虫——使用selenium爬取微博数据(一)
python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...
- [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据
上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) -- 编写一个基本的 Spider 爬取微博用户信息 在上一篇博客中,我们已经新建了一个爬虫应用,并简单实现了爬取一位微 ...
- Python爬虫系列之爬取某优选微信小程序全国店铺商品数据
Python爬虫系列之爬取某优选微信小程序全国商品数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅 ...
- Python爬虫系列之爬取某社区团微信小程序店铺商品数据
Python爬虫系列之爬取某社区团微信小程序店铺商品数据 如有问题QQ请> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流,请勿用于非法用途 数据库仅用于去重使用,数据主要存 ...
- python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)
Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...
- 每日一练:Python国内疫情数据爬取与地图绘制
Python 国内疫情数据爬取与地图绘制 效果图 累计确诊疫情地图绘制 ① 时时数据抓取 ② 获取省份疫情数据 ③ 视觉配置项分段颜色数据设置 ④ 累计确诊疫情地图绘制 现存确诊疫情地图绘制 ① 获取 ...
最新文章
- mysql connection闪退重连_玩家排位巅峰赛开局闪退,重连失败,10分钟后一个提示让他懵了...
- HDOJ HDU 1106 排序 ACM 1106 IN HDU
- QTextCodec中的setCodecForTr等终于消失了 (Qt5)
- ElementUI的el-table怎样隐藏某一列
- armbian安装图形桌面_Linux图形界面的搜索工具,比Windows强吗?
- Vim文本编辑器 指令大全(二)
- mysql查看session对应的ip_Mysql 查看session连接数,状态 | 学步园
- php7 打开错误提示,PHP7如何开启具体错误显示
- 详解:Hive的MetaStore和三种配置方式
- 原生Django常用API 参数
- msxml6 x86.msi v6.10.1129.0
- 服务器布线属于搬迁项目吗,弱电机房服务器搬迁建设整体规划与合理布局
- 【调剂】山东大学控制科学与工程学院生物医学实验室课题组招收硕士研究生...
- DATAGUARD手记(DUPLICATE)(四)
- Oracle sql语句整理合集
- 基于s3c2440的12864液晶驱动
- 【Linux 中国】Simula 诞生之前的面向对象程序设计
- 阿里和京东,谁在假装体面?
- 解决PRprocs5安装问题的方法
- 使用YOLOv5实现单摄像头实时目标检测