scrapy爬虫网站数据
scrapy爬虫
一.目的
1.数据抓取之网络爬虫
2.scrapy的使用方法,能使用scrapy抓取网页数据。
二.能力图谱
三、内容
1.内容:爬取传智播客C/C++讲师的姓名、职称以及个人简介。
2.目标网址:http://www.itcast.cn/channel/teacher.shtml
3.软件: 已经成功 安装好scrapy框架 的pycharm软件 (专业版、社区版都可以)。
4.python3.7及以上。
5.使用scrapy框架实现爬虫,运用xpath解析方式。
四.过程
1、scrapy项目工程: 在pycharm界面中打开 View --> Tool Windows --> Terminal
(1) 验证scrapy是否成功安装: 在Terminal中输入 scrapy 看看是否显示scrapy信息
(2)创建scrapy项目工程 在Terminal中输入:
scrapy startproject + 自定义的项目名称
成功创建项目的目录为:scrapy startproject ITcast
文件说明: scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py:设置数据存储模板,用于结构化数据,如:Django的Model
pipelines.py:数据处理行为,如:一般结构化的数据持久化
settings.py:配置文件,如:递归的层数、并发数,延迟下载等
spiders:爬虫目录,如:创建文件,编写爬虫规则
(3)创建写爬虫的文件 # scrapy genspider +名称 + ‘网站’
建立爬虫文件结果为: scrapy genspider itcast “itcast.cn”
2、解析网页
观察网页,通过浏览器得出他们是这样子的结构,并且我们运用强大的xpath解析方式解析:
3、编写代码 需要编写四个相关联的文件:itcast.py、items.py、settings.py、pipelines.py (管道文件)。
(1) itcast.py # -*- coding: utf-8 -*-import scrapy #导入容器 from ITcast.items import ItcastItemclass ItcastSpider(scrapy.Spider):# 爬虫名 启动爬虫时需要的参数*必需 name = 'itcast'# 爬取域范围 允许爬虫在这个域名下进行爬取(可选) 可以不写 allowed_domains = ['itcast.cn'] #起始url列表 爬虫的第一批请求,将求这个列表里获取 start_urls = ['http://www.itcast.cn/channel/teacher.shtml'] def parse(self, response): node_list = response.xpath("//div[@class='li_txt']") for node in node_list: #创建item字段对象,用来存储信息 item = ItcastItem() # .extract() 将xpath对象转换围殴Unicode字符串 name = node.xpath("./h3/text()").extract() title = node.xpath("./h4/text()").extract() info = node.xpath("./p/text()").extract() item['name'] = name[0] item['title'] = title[0] item['info'] = info[0] #返回提取到的每一个item数据 给管道文件处理,同时还会回来继续执行后面的代码 yield item
(2)items.py
#-*- coding: utf-8 -*-
#Define here the models for your scraped items
#
#See documentation in:
#https://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class ItcastItem(scrapy.Item):
#define the fields for your item here like:
#与itcast.py 定义的一一对应
name = scrapy.Field()
title = scrapy.Field()
info = scrapy.Field()
#pass
(3)settings.py
找到以下字段,取消字段的注释。
ITEM_PIPELINES = { 'ITcast.pipelines.ItcastPipeline': 100, #值越小优先级越高 }
(4) pipelines.py (管道文件)
import json
class ItcastPipeline(object): def __init__(self): #python3保存文件 必须需要'wb' 保存为json格式 self.f = open("itcast_pipeline.json",'wb') def process_item(self, item, spider): #读取item中的数据 并换行处理 content = json.dumps(dict(item),ensure_ascii=False) + ',\n' self.f.write(content.encode('utf=8')) return item def close_spider(self,spider): #关闭文件 self.f.close()
(5)执行文命令行:
scrapy crawl + 爬虫文件的名称。
在Terminal中输入 scrapy crawl itcast 执行scrapy项目,生成json文件:
五、总结
1.建立一个scrapy工程的过程以及准备工作,创建爬虫文件。
2.编写四个相关文件itcast.py、items.py、settings.py、pipelines.py 。
itcast.py指爬虫输出格式的文件,输出爬取网页的数据的输出文件。
items.py是指爬虫数据保存的容器。
settings.py是用来爬取网页数据的文件。
pipelines.py是用来传输数据的文件。
3.最后运行scrapy项目,生成json文件来展示爬取的网络数据。
scrapy爬虫网站数据相关推荐
- 利用Python爬虫网站数据直接导入mysql数据库中
说明: 可能经常出现要爬取某个网站的数据,这时候需要利用爬虫技术来完成,这块主要使用Python来实现. 如何搭建Python环境我上节文章有详细描述:使用Python3.7实现爬虫技术,获取自己想要 ...
- 【Python爬虫网站数据实战】Python爬虫 统计淘宝商品数据+数据可视化
- scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...
- mysql scrapy 重复数据_大数据python(scrapy)爬虫爬取招聘网站数据并存入mysql后分析...
基于Scrapy的爬虫爬取腾讯招聘网站岗位数据视频(见本头条号视频) 根据TIOBE语言排行榜更新的最新程序语言使用排行榜显示,python位居第三,同比增加2.39%,为什么会越来越火,越来越受欢迎 ...
- Scrapy爬虫轻松抓取网站数据
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也 ...
- 【EduCoder答案】Scrapy爬虫(二)热门网站数据爬取
简介 答案查询的入口网页版 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 Scrapy爬虫(二)热门网站数据爬取 >>>查看 第1关:猫眼电影排行TOP100信息 ...
- Scrapy爬虫(6)爬取银行理财产品并存入MongoDB(共12w+数据)
本次Scrapy爬虫的目标是爬取"融360"网站上所有银行理财产品的信息,并存入MongoDB中.网页的截图如下,全部数据共12多万条. 我们不再过多介绍Scrapy的创建 ...
- 爬虫之scrapy框架的数据持久化存储/保存为scv,json文件
文章目录 前情回顾 selenium+phantomjs/chrome/firefox execjs模块使用 今日笔记 scrapy框架 小试牛刀 猫眼电影案例 知识点汇总 数据持久化存储(MySQL ...
- Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Scrapy爬虫,请先准备好Scrapy的环境 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 启动爬虫 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫 ...
最新文章
- android jks sha1,Android 获取签名文件jks的SHA1值或者SHA256的值
- Union all的用法实例sql
- bootstrap-table.js如何根据单元格数据不同显示不同的字体的颜色
- 不相交集合求并的路径压缩
- hibernate工厂模式_Hibernate锁定模式–乐观锁定模式如何工作
- 【机器学习】opencv-人脸识别
- php escapeshellcmd,利用/绕过 PHP escapeshellarg/escapeshellcmd函数
- 三星Galaxy Note10系列国内发布会官宣:8月21日见!
- HDU4183 Pahom on Water(来回走最大流,一个点只经过一次)
- Qt总结之六:QPaintEvent绘制雷达图
- URL 编码是什么?
- 80386汇编_进入32位保护模式
- excel中如何锁定单元格
- Mysql修改字段名、修改字段类型
- 嵌入式Linux misc 设备驱动
- 闲时整理3--Android调用指纹验证
- 【案例】路由器怎么自动获取IPv6地址?
- python 处理锯齿波信号
- 【转】这是一篇很完整的元器件选型指南
- 《Java基础——break与continue用法详解》