获取要爬取的URL

爬虫前期工作

用Pycharm打开项目开始写爬虫文件

字段文件items

# Define here the models for your scraped items

#

# See documentation in:

# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy

class NbaprojectItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

# pass

# 创建字段的固定格式-->scrapy.Field()

# 英文名

engName = scrapy.Field()

# 中文名

chName = scrapy.Field()

# 身高

height = scrapy.Field()

# 体重

weight = scrapy.Field()

# 国家英文名

contryEn = scrapy.Field()

# 国家中文名

contryCh = scrapy.Field()

# NBA球龄

experience = scrapy.Field()

# 球衣号码

jerseyNo = scrapy.Field()

# 入选年

draftYear = scrapy.Field()

# 队伍英文名

engTeam = scrapy.Field()

# 队伍中文名

chTeam = scrapy.Field()

# 位置

position = scrapy.Field()

# 东南部

displayConference = scrapy.Field()

# 分区

division = scrapy.Field()

爬虫文件

import scrapy

import json

from nbaProject.items import NbaprojectItem

class NbaspiderSpider(scrapy.Spider):

name = 'nbaSpider'

allowed_domains = ['nba.com']

# 第一次爬取的网址,可以写多个网址

# start_urls = ['http://nba.com/']

start_urls = ['https://china.nba.com/static/data/league/playerlist.json']

# 处理网址的response

def parse(self, response):

# 因为访问的网站返回的是json格式,首先用第三方包处理json数据

data = json.loads(response.text)['payload']['players']

# 以下列表用来存放不同的字段

# 英文名

engName = []

# 中文名

chName = []

# 身高

height = []

# 体重

weight = []

# 国家英文名

contryEn = []

# 国家中文名

contryCh = []

# NBA球龄

experience = []

# 球衣号码

jerseyNo = []

# 入选年

draftYear = []

# 队伍英文名

engTeam = []

# 队伍中文名

chTeam = []

# 位置

position = []

# 东南部

displayConference = []

# 分区

division = []

# 计数

count = 1

for i in data:

# 英文名

engName.append(str(i['playerProfile']['firstNameEn'] + i['playerProfile']['lastNameEn']))

# 中文名

chName.append(str(i['playerProfile']['firstName'] + i['playerProfile']['lastName']))

# 国家英文名

contryEn.append(str(i['playerProfile']['countryEn']))

# 国家中文

contryCh.append(str(i['playerProfile']['country']))

# 身高

height.append(str(i['playerProfile']['height']))

# 体重

weight.append(str(i['playerProfile']['weight']))

# NBA球龄

experience.append(str(i['playerProfile']['experience']))

# 球衣号码

jerseyNo.append(str(i['playerProfile']['jerseyNo']))

# 入选年

draftYear.append(str(i['playerProfile']['draftYear']))

# 队伍英文名

engTeam.append(str(i['teamProfile']['code']))

# 队伍中文名

chTeam.append(str(i['teamProfile']['displayAbbr']))

# 位置

position.append(str(i['playerProfile']['position']))

# 东南部

displayConference.append(str(i['teamProfile']['displayConference']))

# 分区

division.append(str(i['teamProfile']['division']))

# 创建item字段对象,用来存储信息 这里的item就是对应上面导的NbaprojectItem

item = NbaprojectItem()

item['engName'] = str(i['playerProfile']['firstNameEn'] + i['playerProfile']['lastNameEn'])

item['chName'] = str(i['playerProfile']['firstName'] + i['playerProfile']['lastName'])

item['contryEn'] = str(i['playerProfile']['countryEn'])

item['contryCh'] = str(i['playerProfile']['country'])

item['height'] = str(i['playerProfile']['height'])

item['weight'] = str(i['playerProfile']['weight'])

item['experience'] = str(i['playerProfile']['experience'])

item['jerseyNo'] = str(i['playerProfile']['jerseyNo'])

item['draftYear'] = str(i['playerProfile']['draftYear'])

item['engTeam'] = str(i['teamProfile']['code'])

item['chTeam'] = str(i['teamProfile']['displayAbbr'])

item['position'] = str(i['playerProfile']['position'])

item['displayConference'] = str(i['teamProfile']['displayConference'])

item['division'] = str(i['teamProfile']['division'])

# 打印爬取信息

print("传输了",count,"条字段")

count += 1

# 将字段交回给引擎 -> 管道文件

yield item

配置文件->开启管道文件

# Scrapy settings for nbaProject project

#

# For simplicity, this file contains only settings considered important or

# commonly used. You can find more settings consulting the documentation:

#

# https://docs.scrapy.org/en/latest/topics/settings.html

# https://docs.scrapy.org/en/latest/topics/downloader-middleware.html

# https://docs.scrapy.org/en/latest/topics/spider-middleware.html

# ----------不做修改部分---------

BOT_NAME = 'nbaProject'

SPIDER_MODULES = ['nbaProject.spiders']

NEWSPIDER_MODULE = 'nbaProject.spiders'

# ----------不做修改部分---------

# Crawl responsibly by identifying yourself (and your website) on the user-agent

#USER_AGENT = 'nbaProject (+http://www.yourdomain.com)'

# Obey robots.txt rules

# ----------修改部分(可以自行查这是啥东西)---------

# ROBOTSTXT_OBEY = True

# ----------修改部分---------

# Configure maximum concurrent requests performed by Scrapy (default: 16)

#CONCURRENT_REQUESTS = 32

# Configure a delay for requests for the same website (default: 0)

# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay

# See also autothrottle settings and docs

#DOWNLOAD_DELAY = 3

# The download delay setting will honor only one of:

#CONCURRENT_REQUESTS_PER_DOMAIN = 16

#CONCURRENT_REQUESTS_PER_IP = 16

# Disable cookies (enabled by default)

#COOKIES_ENABLED = False

# Disable Telnet Console (enabled by default)

#TELNETCONSOLE_ENABLED = False

# Override the default request headers:

#DEFAULT_REQUEST_HEADERS = {

# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

# 'Accept-Language': 'en',

#}

# Enable or disable spider middlewares

# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html

#SPIDER_MIDDLEWARES = {

# 'nbaProject.middlewares.NbaprojectSpiderMiddleware': 543,

#}

# Enable or disable downloader middlewares

# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html

#DOWNLOADER_MIDDLEWARES = {

# 'nbaProject.middlewares.NbaprojectDownloaderMiddleware': 543,

#}

# Enable or disable extensions

# See https://docs.scrapy.org/en/latest/topics/extensions.html

#EXTENSIONS = {

# 'scrapy.extensions.telnet.TelnetConsole': None,

#}

# Configure item pipelines

# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html

# 开启管道文件

# ----------修改部分---------

ITEM_PIPELINES = {

'nbaProject.pipelines.NbaprojectPipeline': 300,

}

# ----------修改部分---------

# Enable and configure the AutoThrottle extension (disabled by default)

# See https://docs.scrapy.org/en/latest/topics/autothrottle.html

#AUTOTHROTTLE_ENABLED = True

# The initial download delay

#AUTOTHROTTLE_START_DELAY = 5

# The maximum download delay to be set in case of high latencies

#AUTOTHROTTLE_MAX_DELAY = 60

# The average number of requests Scrapy should be sending in parallel to

# each remote server

#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0

# Enable showing throttling stats for every response received:

#AUTOTHROTTLE_DEBUG = False

# Enable and configure HTTP caching (disabled by default)

# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings

#HTTPCACHE_ENABLED = True

#HTTPCACHE_EXPIRATION_SECS = 0

#HTTPCACHE_DIR = 'httpcache'

#HTTPCACHE_IGNORE_HTTP_CODES = []

#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

管道文件 -> 将字段写进mysql

# Define your item pipelines here

#

# Don't forget to add your pipeline to the ITEM_PIPELINES setting

# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html

# useful for handling different item types with a single interface

from itemadapter import ItemAdapter

import pymysql

class NbaprojectPipeline:

# 初始化函数

def __init__(self):

# 连接数据库 注意修改数据库信息

self.connect = pymysql.connect(host='域名', user='用户名', passwd='密码',

db='数据库', port=端口号)

# 获取游标

self.cursor = self.connect.cursor()

# 创建一个表用于存放item字段的数据

createTableSql = """

create table if not exists `nbaPlayer`(

playerId INT UNSIGNED AUTO_INCREMENT,

engName varchar(80),

chName varchar(20),

height varchar(20),

weight varchar(20),

contryEn varchar(50),

contryCh varchar(20),

experience int,

jerseyNo int,

draftYear int,

engTeam varchar(50),

chTeam varchar(50),

position varchar(50),

displayConference varchar(50),

division varchar(50),

primary key(playerId)

)charset=utf8;

"""

# 执行sql语句

self.cursor.execute(createTableSql)

self.connect.commit()

print("完成了创建表的工作")

#每次yield回来的字段会在这里做处理

def process_item(self, item, spider):

# 打印item增加观赏性

print(item)

# sql语句

insert_sql = """

insert into nbaPlayer(

playerId, engName,

chName,height,

weight,contryEn,

contryCh,experience,

jerseyNo,draftYear

,engTeam,chTeam,

position,displayConference,

division

) VALUES (null,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)

"""

# 执行插入数据到数据库操作

# 参数(sql语句,用item字段里的内容替换sql语句的占位符)

self.cursor.execute(insert_sql, (item['engName'], item['chName'], item['height'], item['weight']

, item['contryEn'], item['contryCh'], item['experience'], item['jerseyNo'],

item['draftYear'], item['engTeam'], item['chTeam'], item['position'],

item['displayConference'], item['division']))

# 提交,不进行提交无法保存到数据库

self.connect.commit()

print("数据提交成功!")

启动爬虫

屏幕上滚动的数据

去数据库查看数据

简简单单就把球员数据爬回来啦~

到此这篇关于详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库的文章就介绍到这了,更多相关Scrapy爬虫员数据存放到Mysql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库相关推荐

  1. Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    Scrapy爬虫,请先准备好Scrapy的环境 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 启动爬虫 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫 ...

  2. python怎么安装scrapy_详解Python安装scrapy的正确姿势

    运行平台:Windows Python版本:Python3.x IDE:Sublime text3 一.Scrapy简介 Scrapy是一个为了爬取网站数据提取结构性数据而编写的应用框架,可以应用于数 ...

  3. 详解 Python 如何将爬取到的数据分别存储到 txt、excel、mysql 中!

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 1. 页面分析 我爬取的页面是腾讯体育,链接如下: https://nba.stats.qq.com/player/list.htm 观察上图:左边展 ...

  4. Python str / bytes / unicode 区别详解 - Python零基础入门教程

    目录 一.前言 二.Python str / bytes / unicode 区别 1.Python2.x 版本中 str / bytes / unicode 区别 2.Python3.x 版本中 s ...

  5. python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法

    网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个 ...

  6. 【Python】调取tushare和joinquant的数据写入本地MySQL数据库(推荐)(技术实现过程)

    本次需求,源于<数据建设小项目_构建量化投资分析模型>,其文字报告版发于个人知乎专栏 https://zhuanlan.zhihu.com/p/349686026. 按照<构建量化投 ...

  7. python 3.x 爬虫基础---http headers详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...

  8. 【科学文献计量】CSSCI数据采集,转化为python中的DataFrame格式,并存放到MySQL数据库

    CSSCI数据采集,转化为python中的DataFrame格式,并存放到MySQL数据库 1 CSSCI数据采集 2 数据加载到python中并进行DataFrame类型转化 3 将DataFram ...

  9. python爬虫之urllib库详解

    python爬虫之urllib库详解 前言 一.urllib库是什么? 二.urllib库的使用 urllib.request模块 urllib.parse模块 利用try-except,进行超时处理 ...

最新文章

  1. Javascript 中 apply、call、bind
  2. 非因果滤波器 matlab,对于无阶跃响应不会过冲的无因果低通滤波器,最清晰的频率响应是什么?...
  3. hdu 5568(dp+大数模拟)
  4. C++重载运算符最好声明为友元
  5. 微信能远程控制电脑吗_牛皮!微信远程控制电脑这个神器太厉害了!
  6. SAP Cloud Platform approuter的本地安装
  7. linux内存回收机制
  8. python浮点数类型与数学_Python3标准库:decimal定点数和浮点数的数学运算
  9. [css] 什么是FOUC?你是如何避免FOUC的?
  10. 使用block的好处
  11. STL之list介绍
  12. 8款最受欢迎的HTML5/CSS3应用及源码
  13. 【Redis】模拟手机验证码案例:Jedis使用、get、hget、hincrBy、setex、生成6位随机数工具
  14. unity学习笔记-相对位置和绝对位置
  15. 卡方线性趋势检验_趋势卡方检验
  16. C语言编写红色警戒外挂
  17. 解决每次打开office都提示windows正在配置visio的问题以及office2013闪退问题
  18. css3图片淡出淡入怎么做,css3图像淡入淡出(css3 image fadein)
  19. 拼多多商品详情,产品竞价,关键词搜索接口
  20. 张驰杭州电子科技计算机学院,计算机学院举办“图灵教育计划”电子信息科学与技术专业交流会...

热门文章

  1. apt-get常用命令
  2. ZendStudio快捷键
  3. 从TXT文本文档向Sql Server中批量导入数据
  4. Maven环境下实现Web工程自动部署到Tomcat
  5. java设计模式---三种工厂模式
  6. Linux终端设备详解
  7. TCP/IP详解--学习笔记(10)-TCP连接的建立与中止
  8. OpenStack计算节点AMQP5672报错
  9. 基于 linux 平台的 libpcap 源代码分析
  10. 外国人评价鸿蒙os2.0发布,鸿蒙os2.0发布以来广获好评,却遭到部分网友指责是披着羊皮的狼...