Scrapy框架实例-2(沪江网网课信息)
今天以一个框架来结束今天的爬虫学习,准备去整高数了。
本次的实例是沪江网校的信息,和实例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(沪江网网课信息)相关推荐
- Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息
Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息 目录 输出结果 实现代码 输出结果 后期更新-- 实现代码 import scrapy class Dmoz ...
- 小福利,带你使用scrapy框架爬取苏宁图书海量信息
大家好,我是天空之城,今天给大家带来小福利,带你使用scrapy框架爬取苏宁图书海量信息 下图为项目的目录结构 看下最后的数据截图,可以存为excel文件,也可以存入mysql数据库,参见前面文章介绍 ...
- 基于scrapy框架的关于58同城招聘网站信息的爬取
起因: 学校项目实训,要求我们爬取招聘网站信息并对其进行分析,在此我和大家分享一下关于我爬取58同城招聘网站信息的过程和结果~ 前期准备步骤: 1.搭建环境:首先把scrapy需要的环境搭建好,再次我 ...
- Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取
一.创建Scrapy项目 在cmd中输入一下指令创建一个新的scrapy项目及一个爬虫 scrapy startproject JD_Goodscd JD_Goodsscrapy genspider ...
- scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!
Scrapy框架安装 操作环境介绍 操作系统:Ubuntu19.10 Python版本:Python3.7.4 编译器:pycharm社区版 安装scrapy框架(linux系统下) 安装scrapy ...
- 爬虫找工作要掌握什么_找爬虫工作必须掌握scrapy框架究竟什么?
十个爬虫九个python写,九个python爬虫全部由scrapy写.社会上在招聘爬虫工程师时,百分之百会需要掌握scrapy爬虫框架.但是scrapy十个什么东西你知道吗? 什么是scrapy 我们 ...
- Scrapy爬取饿了么周围商家信息
大学生吃土指南 一.实验目的及原理 作为一个被花呗和各种电商节支配的当代大学生,每个月难免有三十几天会陷入吃土的困境.但就算吃土也要吃的优雅,吃的舒心.饿了么上有时会有商家活动,可以以很实惠(baip ...
- Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)
文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...
- [爬虫-python] scrapy框架入门实例-百度贴吧
这里写目录标题 前言 0. 本章内容大概流程 1. 安装Scrapy 2. 工程建立 3. 实现过程 3.1在items.py中定义自己要抓取的数据: 3.2 然后在spiders目录下编辑myspi ...
最新文章
- 树莓派:人在太空,刚下火箭,诚招小于19岁的代码开发者
- Python标准模块--asyncio
- c#只用一个for输出三角形
- C++中的位运算和|
- 3-unit1 IPv6网络的管理
- java有什么压力_编程语言的心智负担!你学编程得有多大的压力快来测试一下...
- java符号引用 直接引用_java虚拟机的符号引用和直接引用
- 解决centos sudo执行仍旧显示Permission denied
- 通过Java反射获取对象上的注解,java反射注解妙用-获取所有接口说明
- 简洁的 HTML5 音乐播放器
- 【R图秀-2】社交网络数据可视化(一)
- 对中国大学MOOC课程视频批量下载的探索
- 【人工智能】“深度学习”这十年:52篇顶级论文带你走完人工智能之路
- 微信小程序开发资源汇总 awesome-wechat-weapp
- 1:500城镇地形图测绘已正式启动
- Echarts模板(一):南丁格尔玫瑰图
- 师父韩晋文先生传授的八卦掌套路
- 纯js 编canvas处理图片, 涂鸦笔、画布图片内容旋转 放大缩小 裁剪框 。兼容ie9及以上 谷歌、360、火狐浏览器
- ResRep Lossless CNN Pruning via Decoupling Remembering and Forgetting 论文学习
- KNN分类——matlab(转载)