目标

通过Scrapy爬取到合作院校的名称及该所院校在学堂在线开课的数量,将爬取到的数据保存到一个json文件中,例如:“清华大学,308”,地址 http://www.xuetangx.com/partners 。

环境

博主是在Windows平台使用PyCharm基于Python 3.7Scrapy 2.0.1编写爬虫,不赘述环境配置了。

建立项目

右键Scrapy文件夹,选择在终端中打开

在终端中输入scrapy startproject xtzx,其中xtzx为项目名(忽略图中lianjia,只是博主懒得再重新截图了,下同)。

新建begin.py


在项目文件夹中新建begin.py,内容为:

from scrapy import cmdline
cmdline.execute("scrapy crawl xtzx".split())

其中xtzx为爬虫名(无须与项目名相同)。目的是为了方便运行爬虫。否则,需要在终端手动输入scrapy crawl xtzx来运行

更改items.py

import scrapy
class MyItem (scrapy.Item):school = scrapy.Field()num = scrapy.Field()

分析网页

右键爬取内容,检查,以下以school为例讲解。
复制三个school的xpath路径,不难找到规律。

/html/body/article[1]/section/ul/li[1]/a/div[2]/h3
/html/body/article[1]/section/ul/li[2]/a/div[2]/h3
/html/body/article[1]/section/ul/li[3]/a/div[2]/h3

新建并更改spider.py

spider文件夹中新建spider.py,并键入:

import scrapy
from xtzx.items import MyItem
class mySpider(scrapy.spiders.Spider):name = "xtzx"allowed_domains = ["xuetangx.com"]start_urls = ["http://www.xuetangx.com/partners"]def parse(self, response):item = MyItem ()#开课院校for each in response.xpath("/html/body/article[1]/section/ul/*"): item['school'] = each.xpath("a/div[2]/h3/text()").extract()item['num'] = each.xpath("a/div[2]/p/text()").extract()yield item #edX合作院校和伙伴for each in response.xpath("/html/body/article[2]/section/ul/*"): item['school'] = each.xpath("a/div[2]/h3/text()").extract()item['num'] = each.xpath("a/div[2]/p/text()").extract()yield(item) 

更改setting.py

#不遵守机器人协议
ROBOTSTXT_OBEY = False
BOT_NAME = 'xtzx'
SPIDER_MODULES = ['xtzx.spiders']
NEWSPIDER_MODULE = 'xtzx.spiders'
#开启管道
ITEM_PIPELINES = {'xtzx.pipelines.MyPipeline': 300,}
#客户端伪装
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'

更改pipelines.py

import json
class MyPipeline (object):#打开文件def open_spider (self,spider):try:self.file = open('MyData.json ', "w", encoding="utf-8")except Exception as err:print(err)#写入def process_item (self, item, spider):dict_item = dict (item)# 生成 json 串json_str = json.dumps(dict_item , ensure_ascii=False) + "\n" self.file.write(json_str)return item#关闭文件def close_spider (self,spider):self.file.close()

运行爬虫

运行begin.py,成功爬取到数据。这里只列举部分数据。

{"school": ["清华大学"], "num": ["31门课程"]}
{"school": ["台湾清华大学"], "num": ["0门课程"]}
{"school": ["台湾交通大学"], "num": ["0门课程"]}
{"school": ["斯坦福大学"], "num": ["0门课程"]}
{"school": ["中央社会主义学院"], "num": ["0门课程"]}
{"school": ["西安交通大学"], "num": ["16门课程"]}
{"school": ["中南财经政法大学"], "num": ["3门课程"]}
{"school": ["复旦大学"], "num": ["0门课程"]}
{"school": ["北京理工大学"], "num": ["0门课程"]}
{"school": ["中国科学技术大学"], "num": ["0门课程"]}

交流讨论等具体内容请访问我的博客

原文地址:https://www.boyinthesun.cn/post/python-scrapy1/

Scrapy实例————爬取学堂在线合作院校页面内容相关推荐

  1. 七、Python简单爬取学堂在线合作院校页面内容

    这是一个大学生的爬虫作业,我是收钱干活的,比较简单,来过来分享一下. 就是要爬取到合作院校的名称及该所院校在学堂在线开课的数量,将爬取到的数据保存到一个json文件中!例如:"{" ...

  2. python 爬虫-爬取学堂在线合作院校

    关键词:动态页面 JavaScript接口 绕过网页直接爬取信息 亲测有效,转自https://blog.csdn.net/weixin_43873801/article/details/109689 ...

  3. 北邮 python 学堂在线动态请求页面内容爬取

    声明:用途仅供学习使用 实验一 爬取学堂在线: 一.实验题目 爬取学堂在线的计算机类课程页面内容 点击跳转学堂在线 要求将课程名称.老师.所属学校和选课人数信息,保存到一个csv文件中. 二.实验环境 ...

  4. 边学边敲边记之爬虫系列(八):Scrapy系统爬取伯乐在线

    一.前言 上一篇边学边敲边记爬虫系列七给大家仔细讲解了如何用Xpath分类爬取医疗信息网站医疗器材名称和介绍图片,以及三种最常用的存储方法. 本篇是本系列的第八篇了,今天给大家讲讲如何用Scrapy分 ...

  5. scrapy实例 ----- 爬取小说

    参考: 静觅scrapy教程 爬取目标:顶点小说网 http://www.23us.com/ 希望顶点小说网不要生气 首先来编写items.py #-*- coding:utf-8 -*- # Def ...

  6. 学堂在线 python_Python作业1:Scrapy爬取学堂在线+链家二手房

    import scrapy import json from pprint import pprint from studyHall.items import StudyhallItem class ...

  7. Python scrapy爬虫爬取伯乐在线全部文章,并写入数据库

    伯乐在线爬虫项目目的及项目准备: 1.使用scrapy创建项目 2.创建爬虫,bole 域名 jobbole.com 3.Start_urls = ['http://blog.jobbole.com/ ...

  8. Scrapy实例:爬取中国天气网天气数据

    1.创建项目 在你存放项目的目录下,按shift+鼠标右键打开命令行,输入命令创建项目: PS F:\ScrapyProject> scrapy startproject weather # w ...

  9. Scrapy 实例——爬取豆瓣图书排名top250

    1.安装 pip install E:\python\lxml-4.2.6-cp36-cp36m-win_amd64.whl pip install E:\python\Twisted-18.9.0- ...

最新文章

  1. C语言程序设计第十章字符串,C语言程序设计(字符串)
  2. 基于mcat开发智能合约应用(三)编码自动化与合约交互
  3. 【学术相关】U.S.News正式发布最新的2022最佳全球院校排名
  4. Linux df -h查看磁盘使用情况
  5. 安卓机高的地图要用浏览器打开_浏览器F12操作概述
  6. 不修条地铁,都不好意思叫自己大城市
  7. [苹果技巧]苹果系统用于系统监控和管理的命令
  8. 23.使用非阻塞IO 2
  9. Vmware中RedHat命令行和图形界面切换
  10. 网页设计图片向上浮动_CSS实现图片向上浮动
  11. 看看别人用什么:最佳网管工具点评
  12. LCD1602显示程序理解
  13. 记一次用jspdf和html2canvas导出pdf分页处理
  14. 【工控老马】MODBUS通讯协议及编程详解
  15. 电脑配置学习(台式机)
  16. win10设置桌面图标间距
  17. 翟东平微信公众号视频教程JAVA201810版2/3阶段-翟东平-专题视频课程
  18. 贪心入门+10道例题+解析代码
  19. WPF MVVM架构 程序退出右下角托盘图标简单解决方案
  20. java开发对学位证_您需要软件学位才能成为成功的开发人员吗

热门文章

  1. 注册ChatGPT时提示Oops! The email you provided is not supported
  2. 如何用WordPress搭建一个属于自己的网站、让你从0-1的保姆级教程
  3. 源码编译安装Nginx及网站服务配置
  4. 问答系统 - 使用BERT或DrQA模型在SQuAD数据集上构建问答系统。
  5. php跳出微信默认浏览器打开网页,求助,跳出微信内置浏览器直接到默认浏览器代码...
  6. GraalVM编译SpringBoot程序
  7. 研究员 vs Nervos
  8. appium的安装及坑Error: Could not detect Mac OS X Version from sw_vers output,TypeError: Cannot read prope
  9. 李承鹏“卖拐”了吗?
  10. MacOs Hadoop环境搭建 IDEA开发MapReduce程序及调试