python爬虫之Scrapy框架 + MySQL,爬取337名新秀球员体测数据

Scrapy框架 + MySQL入库。
所有2019届新秀球员的基本信息以及体测数据全部入库。

开发环境

  • python3.7
  • Scrapy框架及其组件
  • json模块
  • pymysql模块

获取分析:

1.获取每位球员的个人ID及个人信息页面链接。
通过抓包发现目的信息数据是通过Ajax技术异步加载得到,解析网页,找到所需的数据。找到这个json格式里面的数据正好是我们所需要的,里面还包含有每位球员的姓名以及个人ID。

通过整合个人ID,能完整地得到每位球员的个人信息页面链接。

#获取个人基本信息:
        jsondata = response.text
        data = json.loads(jsondata)['data']
        for player in data:
            firstName = player['firstName']
            playerid = player['id']
            lastName = player['lastName']
            allname = lastName+" "+firstName
            college = player['college']
            position = player['position']
            infoid = player['shieldId']
            playerurl = "https://www.nfl.com/prospects/johnathan-abram?id={}".format(infoid) 
            yield scrapy.Request(url=playerurl,callback=self.parseurl,meta={'allname':allname,'playerid':playerid,'college':college,'position':position,'infoid':infoid})
            ...
个人页面

通过查看源码发现,球员个人页面为静态页面,数据直接解析就能获取,并不困难。

最后将所获取到的基本信息以及个人页面的体测数据通过pipelines组件存入MySQL数据库,以便做必要的数据分析。

pipelines入库操作:
    def open_spider(self,spider):
        self.conn = pymysql.connect(host='localhost',user='root',password='xxxxxx',database='xxxxxx',port=3306)
        self.post = self.conn.cursor()

    def process_item(self, item, spider):
        sql = """
        insert into combine2019(id,球员名字,球员id,球员大学,位置,球员信息id,身高,体重,arms,hands,40码,benchpress,垂直跳高,跳远,conedrill3,shuttle20,shuttle60) value(null,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
        """
        items = dict(item)
        self.post.execute(sql, (items['allname'], items['playerid'], items['college'],... items['yards40'], items['benchpress'], items['verticaljump']... )
        self.conn.commit()
        return item

    def close_spider(self,spider):
        self.conn.close()

结果展示:

(总共337名新秀球员的信息已全部录入完成)

你可能感兴趣的:(python爬虫之Scrapy框架 + MySQL,爬取337名新秀球员体测数据)