本文参考博客:
scrapy爬虫-爬取慕课网全部课程
scrapy爬虫框架入门实例

准备工作:

anaconda(为了简单安装scrapy)

  • 安装scrapy的方法有好多种,原来在pip上花了挺多时间并且还没安装成功,
  • 后来下载了anaconda只用几行指令就成功了,HTTPERROR时可以尝试换镜像或者重启。
  • (如果懒得动手配置环境变量的话安装时把上面的选项打钩)

scrapy(根据框架编写爬虫)

  • 在cmd中使用 scrapy startproject projectname(自定义项目名) 即可创建框架
  • 启动则在项目根路径中 scrapy crawl spiderName(spider类中的name属性)
  • 在cmd中清屏为cls,换路径为cd

可能遇到的坑:

  • 启动时没用到类中字段name对应的名字。
  • item类继承scrapy.item,spiderl类继承的是scrapy.Spider,不要打错了
  • 解析时报错:list index out of range时可能是没获取到字段,应该检查XPaths是否有效

流程

  • 编写流程:item->spider->pipelines
  • 思路流程:获取URL->获取页面->解析页面->存储数据

①创建框架

打开cmd,scrapy startproject name(自定义)

②item类

根据自己想爬取的内容设置字段
name = scrapy.Field()

import scrapyclass CourseItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()#标题title= scrapy.Field()#页面路径url= scrapy.Field()#图片路径image_url= scrapy.Field()#课程描述introduction= scrapy.Field()#观看量student= scrapy.Field()

②Spider类

  • url跟进可在完成单页爬取后再加入。
  • 为了更好的匹配字段需要掌握XPath,当然用其他方式也行。
  • 在进行url跟进时,用“下一页”为标记进行URL寻找比较方便。
    name:spider名,启动时需要对应该字段,scrapy crawl name
    allowed_domains:允许域名
    start_urls:爬取的网址
    parse:爬取方法
import scrapy
from imooc_spider.CourseItems import CourseItemclass MySpider (scrapy.Spider):#spider启动名name="imoocspider"#允许访问的域allowed_domains=["imooc.com"]#爬取地址start_urls=["http://www.imooc.com/course/list"]#改写parse爬取方法def parse(self,response):#实力一个容器保存爬取信息item=CourseItem()#爬取部分,使用xpath方式选择信息,具体方法根据网页结构#先获每个课程的divfor box in response.xpath('//div[@class="course-card-container"]/a[@target="_blank"]'):#获取每个div中的课程路径item['url'] = 'http://www.imooc.com' + box.xpath('.//@href').extract()[0]#获取div中的课程标题item['title'] = box.xpath('.//h3/text()').extract()[0].strip()#获取div中的标题图片地址item['image_url'] = box.xpath('.//@data-original').extract()[0]#获取div中的学生人数item['student'] = box.xpath('.//span/text()').extract()[1].strip()#获取div中的课程简介item['introduction'] = box.xpath('.//p/text()').extract()[0].strip()#返回信息yield item#url跟进开始(爬取完整的信息)url=response.xpath('//a[contains(text(),"下一页")]/@href').extract()if url:#将信息组合成下一页的urlpage='http://www.imooc.com' + url[0]#返回urlyield scrapy.Request(page,callback=self.parse)#url跟进结束

③pipelines类

pipelines用于存储数据,本案例将item存储为json格式
应该是我这理问题,依照参考博们的代码使用__int__方法后
报错指向文件生成这行:self.file.write(line)

from scrapy.exceptions import DropItem
import jsonclass MyPipeline(object):#def __int__(self):#    也可以将读取文件置入__int__方法中#  self.file = open('data.json', 'w', encoding='utf-8')#该方法用于处理数据 def process_item(self,item,spider):#读取item中数据line=json.dumps(dict(item),ensure_ascii=False)+"\n"#写入文件self.file.write(line)#返回itemreturn item#该方法在spider开启时被调用def open_spider(self,spider):#打开文件self.file = open('data.json', 'w', encoding='utf-8')  #该方法在spider关闭时被调用def close_spider(self,spider):self.file.close()

结果

在项目根目录出现了data.json文件

小白scrapy试炼-爬取慕课网免费课程相关推荐

  1. 使用scrapy爬虫框架爬取慕课网全部课程信息

    爬取的链接: http://www.imooc.com/course/list 爬取的内容: 课程链接, 课程的图片url, 课程的名称, 学习人数, 课程描述 1.安装scrapy模块 pip in ...

  2. Python爬虫学习笔记 (9) [初级] 小练习 爬取慕课网课程清单

    更新日期: 2021.03.28 本节学习内容 : 练习使用 bs4 和 xlwings - 爬取慕课网免费课程清单并存为 Excel 文件. 目录 1. 目标信息 2. 爬取步骤 3. 代码 5. ...

  3. 使用Scrapy框架爬取慕课网页

    想要完成一个scrapy爬虫框架,那首先得明确自己想要爬取的东西是什么,要选择什么样的爬取方法.接下来我就讲一下我使用Scrapy框架爬取慕课网的一些思路以及过程. 思路:(1)打开慕课网址,并分析网 ...

  4. python爬虫爬取慕课网中的图片

    我们简单地爬取慕课网中免费课程下的第一页的图片,如想爬取多页图片,可以添加for循环自行实现 python版本:3.6.5 爬取网址:http://www.imooc.com/course/list ...

  5. scrapy实现爬取全书网小说到Mysql数据库(附代码)

    前言 本篇文章实现python的scrapy框架爬取全书网小说,scrapy框架的安装我在这里就不在赘述了,建议window用户使用anaconda安装,这里比较省心一些.运行环境python3(实际 ...

  6. Python爬虫实战+Scrapy框架 爬取当当网图书信息

    1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...

  7. 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据

    为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...

  8. 我的第一个Scrapy 程序 - 爬取当当网信息

    前面已经安装了Scrapy,下面来实现第一个测试程序. 概述 Scrapy是一个爬虫框架,他的基本流程如下所示(下面截图来自互联网) 简单的说,我们需要写一个item文件,定义返回的数据结构:写一个s ...

  9. 简单python爬虫案例(爬取慕课网全部实战课程信息)

    技术选型 下载器是Requests 解析使用的是正则表达式 效果图: 准备好各个包 # -*- coding: utf-8 -*- import requests #第三方下载器 import re ...

最新文章

  1. Web3.js 0.20.x API 中文版翻译 1
  2. PowerDesigner使用教程【转】
  3. python表示不服怎么办_10万+的短视频被批量生产了,Python表示不服!
  4. Spring Boot 2.x基础教程:MyBatis的多数据源配置
  5. python3精要(2)-python运行过程,模块,内置对象
  6. Linux input子系统 io控制字段【转】
  7. 世界坐标系,摄像机坐标系、图像坐标系关系汇总
  8. r.java没有生成_R.java 常见问题(R.java文件没有生成 )
  9. 在批处理文件中启动MediaPlayer播放制定文件
  10. 数字逻辑基础与verilog设计_数字电路学习笔记(五):逻辑设计基础
  11. Cocos2D研究院之CCNode详解(三)
  12. SFML 与 VS2015 的安装配置
  13. Xamarin.Forms Layout Challenges – Great Places(已全文翻译)
  14. mysql分页查询公式
  15. 360开源的插件化框架Replugin深度剖析
  16. HAUT OJ 1504: CXK的篮球数(加强版)--差分法
  17. 2018我们讲一下百度云BAE专业引擎的使用
  18. 软件自我成长之路——关于自动更新
  19. 蓝旭前端预习5之DOM(文档对象模型)
  20. java对一个集合中的汉字字段根据拼音排序

热门文章

  1. 安装Nvidia驱动run文件
  2. 文献与逻辑的联手——评林奎成《吴三桂与甲申之变》王立群新浪博客
  3. Kafka批量消费模式
  4. “ 迎奥运、勤学习、树新风”演讲比赛主持词
  5. 鱼搜_鱼搜官网_鱼搜搜索_http://www.7yusou.com
  6. 蓝桥杯——既约分数(c语言)
  7. Scala核心编程 第一章—Scala语言概述
  8. STC大作业创新设计-乒乓游戏改进-代码
  9. React项目 antd 修改主题颜色
  10. 大数值孔径显微镜极限分辨率的研究