今天以一个框架来结束今天的爬虫学习,准备去整高数了。

本次的实例是沪江网校的信息,和实例1一样都是爬取各种分类。

不再过多展示页面信息了,直接开代码!!

items:

# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass HujiangItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title = scrapy.Field()price = scrapy.Field()main = scrapy.Field()teacher = scrapy.Field()

settings基本都一样,改一下请求头,robots协议。。。。

spider:(hj)

# -*- coding: utf-8 -*-
import scrapy
from hujiang.items import HujiangItem
import timeclass HjSpider(scrapy.Spider):name = 'hj'allowed_domains = ['hujiang.com']start_urls = ['https://class.hujiang.com/?utm_campaign=%E6%B2%AA%E6%B1%9F%E7%BD%91%E6%A0%A1%E5%93%81%E4%B8%93&utm_adgroup=%E6%A0%87%E9%A2%98&utm_source=baidu_pz&utm_medium=cpc&sem_source=sem_baidu_pz&utm_adkeyword=%E6%B2%AA%E6%B1%9F%E7%BD%91%E6%A0%A1']def parse(self, response):url_list = []infos = response.xpath('/html/body/div[2]/div[1]/div[3]/div[2]/div[1]/div/div/ul/li')for info in infos:url_1 = info.xpath('h3/a/@href').extract_first()url_2 = info.xpath('h3/span/a/@href').extract()#链接存在于两个标签内,分别取出来放到列表里,然后再遍历列表url_2_1 = url_2[0]url_2_2 = url_2[-1]url_list.append(url_1)url_list.append(url_2_1)url_list.append(url_2_2)#遍历url列表,访问网页for url in url_list:requests = scrapy.Request(url,method="get",callback=self.get_Html)yield requestsdef get_Html(self, response):infos = response.xpath('//*[@id="listData"]/ul/li')for info in infos:item = HujiangItem()#标题信息item['title'] = info.xpath('div/div[2]/div[1]/a/text()').extract_first()#价格price = info.xpath('div/div[2]/p/span[1]/span/text()').extract()if price[0] == "免费":item['price'] = "免费"else:item['price'] = price[0] + price[1]#概要信息item['main'] = info.xpath('div/div[2]/div[2]/span[1]/text()').extract_first()#教师信息(可能为空,需要判断)item['teacher'] = info.xpath('div/div[2]/div[2]/span[2]/text()').extract_first()if item['teacher']:item['teacher'] = item['teacher']else:item['teacher'] = "此处未展示教师师信息!!"#print(title.strip())#print(teacher)yield itemtime.sleep(1)

pipelines:

# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import codecs
import csvclass HujiangPipeline(object):def __init__(self):with open("F://hujiang.csv",'ab+') as self.fp:self.fp.write(codecs.BOM_UTF8)self.fp = open("F://hujiang.csv",'a+',newline='',encoding='utf-8')self.write = csv.writer(self.fp)self.write.writerow(['标题','价格','概要','老师'])def process_item(self, item, spider):self.write.writerow([item['title'].strip(), item['price'], item['main'], item['teacher']])return itemdef close(self):self.fp.close()

最后就可以看到我们想要的信息进入了我们的文件中,

结果展示:

Scrapy框架实例-2(沪江网网课信息)相关推荐

  1. Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息

    Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息 目录 输出结果 实现代码 输出结果 后期更新-- 实现代码 import scrapy class Dmoz ...

  2. 小福利,带你使用scrapy框架爬取苏宁图书海量信息

    大家好,我是天空之城,今天给大家带来小福利,带你使用scrapy框架爬取苏宁图书海量信息 下图为项目的目录结构 看下最后的数据截图,可以存为excel文件,也可以存入mysql数据库,参见前面文章介绍 ...

  3. 基于scrapy框架的关于58同城招聘网站信息的爬取

    起因: 学校项目实训,要求我们爬取招聘网站信息并对其进行分析,在此我和大家分享一下关于我爬取58同城招聘网站信息的过程和结果~ 前期准备步骤: 1.搭建环境:首先把scrapy需要的环境搭建好,再次我 ...

  4. Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取

    一.创建Scrapy项目 在cmd中输入一下指令创建一个新的scrapy项目及一个爬虫 scrapy startproject JD_Goodscd JD_Goodsscrapy genspider ...

  5. scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!

    Scrapy框架安装 操作环境介绍 操作系统:Ubuntu19.10 Python版本:Python3.7.4 编译器:pycharm社区版 安装scrapy框架(linux系统下) 安装scrapy ...

  6. 爬虫找工作要掌握什么_找爬虫工作必须掌握scrapy框架究竟什么?

    十个爬虫九个python写,九个python爬虫全部由scrapy写.社会上在招聘爬虫工程师时,百分之百会需要掌握scrapy爬虫框架.但是scrapy十个什么东西你知道吗? 什么是scrapy 我们 ...

  7. Scrapy爬取饿了么周围商家信息

    大学生吃土指南 一.实验目的及原理 作为一个被花呗和各种电商节支配的当代大学生,每个月难免有三十几天会陷入吃土的困境.但就算吃土也要吃的优雅,吃的舒心.饿了么上有时会有商家活动,可以以很实惠(baip ...

  8. Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)

    文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...

  9. [爬虫-python] scrapy框架入门实例-百度贴吧

    这里写目录标题 前言 0. 本章内容大概流程 1. 安装Scrapy 2. 工程建立 3. 实现过程 3.1在items.py中定义自己要抓取的数据: 3.2 然后在spiders目录下编辑myspi ...

最新文章

  1. 树莓派:人在太空,刚下火箭,诚招小于19岁的代码开发者
  2. Python标准模块--asyncio
  3. c#只用一个for输出三角形
  4. C++中的位运算和|
  5. 3-unit1 IPv6网络的管理
  6. java有什么压力_编程语言的心智负担!你学编程得有多大的压力快来测试一下...
  7. java符号引用 直接引用_java虚拟机的符号引用和直接引用
  8. 解决centos sudo执行仍旧显示Permission denied
  9. 通过Java反射获取对象上的注解,java反射注解妙用-获取所有接口说明
  10. 简洁的 HTML5 音乐播放器
  11. 【R图秀-2】社交网络数据可视化(一)
  12. 对中国大学MOOC课程视频批量下载的探索
  13. 【人工智能】“深度学习”这十年:52篇顶级论文带你走完人工智能之路
  14. 微信小程序开发资源汇总 awesome-wechat-weapp
  15. 1:500城镇地形图测绘已正式启动
  16. Echarts模板(一):南丁格尔玫瑰图
  17. 师父韩晋文先生传授的八卦掌套路
  18. 纯js 编canvas处理图片, 涂鸦笔、画布图片内容旋转 放大缩小 裁剪框 。兼容ie9及以上 谷歌、360、火狐浏览器
  19. ResRep Lossless CNN Pruning via Decoupling Remembering and Forgetting 论文学习
  20. KNN分类——matlab(转载)

热门文章

  1. jvm attach api
  2. 【JS面试题】面试官问我:遍历一个数组用 for 和 forEach 哪个更快?
  3. 分享图文到Facebook、Twitter、Pinterest
  4. 后台拿shell全集
  5. 基于Qt的网络音乐播放器(四)酷狗API接口获取歌曲的搜索列表和歌曲的播放
  6. URP-官网学习记录
  7. adonis 开发 01
  8. Linux软件源更新地址
  9. cesium画飞线_Cesium+earthSD实现相机飞行动画
  10. centos 7 指令集