python爬蟲之Scrapy框架 + MongoDB,爬取CBA聯(lián)盟所有球員基本信息

CBA聯(lián)賽正進(jìn)行得如火如荼,而20支CBA球隊(duì)各自的陣容深度究竟幾何?
Scrapy框架 + MongoDB,獲取CBA中國男籃所有球隊(duì)球員的基本信息,以便往后的數(shù)據(jù)分析使用。

開發(fā)環(huán)境

  • python3.7
  • Scrapy框架及其組件
  • json模塊
  • pymongo模塊

獲取分析:

1.獲取球隊(duì)鏈接
獲取球隊(duì)鏈接的網(wǎng)頁是通過Ajax技術(shù)異步加載得到。
通過抓包發(fā)現(xiàn),所需的數(shù)據(jù)正是json格式,是理想中的情況。

#解析球隊(duì)鏈接:
def parse(self, response):    
        club0 = json.loads(response.text)
        clubs = club0['data']
        baseurl = "https://api-all.9h-sports.com/cba-data/api/cba/v1/league/player-history?clubId={}"
        for oneclub in clubs:
            clubname = oneclub['name']
            clubid = oneclub['club_id']
            cluburl = baseurl.format(clubid)
            print (clubname + cluburl)
            yield scrapy.Request(url=cluburl,callback=self.parsecluburl,dont_filter=True,meta={'clubname':clubname}) 

2.進(jìn)入各支球隊(duì)URL鏈接頁面,獲取球隊(duì)名單下所有球員的數(shù)據(jù)。
通過抓包發(fā)現(xiàn),所需要的球員數(shù)據(jù)同樣是通過Ajax技術(shù)異步加載得到,且數(shù)據(jù)格式也和上一個頁面相同,還是json格式的數(shù)據(jù)。

#解析球員數(shù)據(jù)
def parsecluburl(self,response0):
        players0 = json.loads(response0.text)
        players = players0['data']
        for player in players:
...

                allitem = items.CbaplayerItem( 
                          playername = playername,
                          playernumber = playernumber,
                          playercountry = playercountry,
                          playerposition = playerposition,
                          playerheight = playerheight,
                          playerweight = playerweight,
                          playerbirth = playerbirth,
                          playerclub = playerclub
                          )
                yield allitem

最后將獲取到的所有球員的數(shù)據(jù)通過pipelines組件存入MongoDB數(shù)據(jù)庫。

#pipelines入庫
import pymongo
import json

class CbaplayerPipeline(object):
    def __init__(self):
        self.conn = pymongo.MongoClient(host='127.0.0.1',port=27017) #連接數(shù)據(jù)庫
        self.dbb = self.conn.cbaplayers #創(chuàng)建數(shù)據(jù)庫
        self.dbbcc = self.dbb.cbaplayer0 #創(chuàng)建集合

    def process_item(self, item, spider):
        item = dict(item)
        self.dbbcc.insert(item)
        return item

結(jié)果展示:

廣東集合!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,801評論 1 45
  • 面試題一:https://github.com/jimuyouyou/node-interview-questio...
    R_X閱讀 1,758評論 0 5
  • 一:什么是閉包?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 10,025評論 1 52
  • 塞北天寒山染霜,南方秋艷菊花黃。暮煙棹遠(yuǎn)渡溪淺,稻穗彎腰谷飽漿。雨打荷殘魂墜落,風(fēng)吹云倦雁橫翔。莫為秋離懷悵望,保...
    濤頭立閱讀 933評論 0 1
  • 二寶四個月過兩天了,還在享受媽媽的陪伴,享受純天然的母乳,算是個幸福寶寶吧,雖然有時我陪他睡覺時會玩手機(jī)把手鬧醒。...
    小丫屠閱讀 341評論 0 0

友情鏈接更多精彩內(nèi)容