爬取高考派大學(xué)排名動(dòng)態(tài)代碼

from urllib import request,parse
import ssl,json,pymysql
class GaoKaoPaiSpider(object):

def __init__(self):
   數(shù)據(jù)庫相關(guān)
    self.client = pymysql.Connect(
        host='127.0.0.1',user='root',
        password='ljh1314',database='gaokaopai',
        port=3306,charset='utf8'
    )
    # 創(chuàng)建游標(biāo)
    self.cursor = self.client.cursor()
    # 添加排行榜排名默認(rèn)字段
    self.rank = 1


def send_request(self,form=None,headers=None):
    """發(fā)起請(qǐng)求撞蜂,獲取數(shù)據(jù)"""
    form_data = parse.urlencode(form).encode('utf-8')

    if not headers:
        headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
        }
    url = 'http://www.gaokaopai.com/rank-index.html'
    req = request.Request(url=url,headers=headers,data=form_data)
    ssl_context = ssl._create_unverified_context()
    response = request.urlopen(req,context=ssl_context)
    html = response.read().decode('utf-8')

    # has_next:判斷是否需要繼續(xù)請(qǐng)求下一頁
    has_next = self.parse_response(html)

    #獲取下一頁
    if has_next:
        form['start'] = form['start']+25
        self.send_request(form=form)
    else:
        print('數(shù)據(jù)獲取完畢')


def parse_response(self,html):
    #!DOCTYPE HTML 如果!DOCTYPE HTML存在html中
    # 說明返回的不是json字符串,而是html,在此案例中
    # 表明數(shù)據(jù)已經(jīng)獲取完畢
    if '!DOCTYPE HTML' in html:
        return False
    # json.loads:參數(shù)必須是一個(gè)json字符串
    json_data = json.loads(html)
    jobs = json_data['data']['ranks']
    for job in jobs:
        job_info = {}
        job_info['top'] = self.rank
        job_info['title'] =job['uni_name']
        job_info['zongfen'] = self.get_default_num(data=job['xiao_total'],isFloat=True)
        job_info['class'] = job['uni_type']
        job_info['dizhi'] = job['city_code']
        job_info['pici'] = '本科一批'
        self.rank += 1
        print(job_info)
        self.save_data_to_mysql(job_info)

    # 如果jobs列表數(shù)據(jù)大于0,說明邢疙,可能存在下一頁,
    # 繼續(xù)發(fā)起請(qǐng)求,所以返回True
    if len(jobs) > 0:
        return True
    elif len(jobs) == 0:
        return False


def get_default_num(self,data=None,defalut=0,isFloat=False):
    """
    :param data: 傳遞的參數(shù)
    :param defalut: 設(shè)置默認(rèn)值
    :param isFloat: 是否是浮點(diǎn)型
    :return:
    """
    if data:
        if isFloat:
            return float(data)
        else:
            return int(data)
    else:
        if isFloat:
            return float(defalut)
        else:
            return defalut

def save_data_to_mysql(self,job_info):
    """插入數(shù)據(jù)"""
    insert_sql = """
        INSERT INTO dsa(%s)
        VALUES (%s)
        """%(
            ','.join(job_info.keys()),
            ','.join(['%s']*len(job_info)),
    )
    try:
        self.cursor.execute(insert_sql,list(job_info.values()))
        self.client.commit()
        print('插入成功')
    except Exception as err:
        self.client.rollback()
        print(err)

if name == 'main':
spider = GaoKaoPaiSpider()

"""
    otype: 2
    city: 0
    cate: 0
    batch_type: 0
    start: 25
    amount: 25
"""

form = {
    'otype': 2,
    'city': 0,
    'cate': 0,
    'batch_type':0,
    'start':25,
    'amount':25
}

spider.send_request(form=form)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宣蠕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冕杠,更是在濱河造成了極大的恐慌谨娜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呕屎,死亡現(xiàn)場離奇詭異让簿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)榨惰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門拜英,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琅催,你說我怎么就攤上這事居凶。” “怎么了藤抡?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵侠碧,是天一觀的道長。 經(jīng)常有香客問我缠黍,道長弄兜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任瓷式,我火速辦了婚禮替饿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贸典。我一直安慰自己视卢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布廊驼。 她就那樣靜靜地躺著据过,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妒挎。 梳的紋絲不亂的頭發(fā)上绳锅,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音酝掩,去河邊找鬼鳞芙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的原朝。 我是一名探鬼主播闯割,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼竿拆!你這毒婦竟也來了宙拉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤丙笋,失蹤者是張志新(化名)和其女友劉穎谢澈,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體御板,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锥忿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怠肋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敬鬓。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笙各,靈堂內(nèi)的尸體忽然破棺而出钉答,到底是詐尸還是另有隱情,我是刑警寧澤杈抢,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布数尿,位于F島的核電站,受9級(jí)特大地震影響惶楼,放射性物質(zhì)發(fā)生泄漏右蹦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一歼捐、第九天 我趴在偏房一處隱蔽的房頂上張望何陆。 院中可真熱鬧,春花似錦豹储、人聲如沸贷盲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晃洒。三九已至慨灭,卻和暖如春朦乏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氧骤。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工呻疹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筹陵。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓刽锤,卻偏偏與公主長得像镊尺,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子并思,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 聲明:本文講解的實(shí)戰(zhàn)內(nèi)容庐氮,均僅用于學(xué)習(xí)交流,請(qǐng)勿用于任何商業(yè)用途宋彼! 一弄砍、前言 強(qiáng)烈建議:請(qǐng)?jiān)陔娔X的陪同下,閱讀本文...
    Bruce_Szh閱讀 12,679評(píng)論 6 28
  • =========================================================...
    lavor閱讀 3,484評(píng)論 0 5
  • 英文文檔输涕,一開始我也是抗拒的音婶,邊翻譯邊看,也就花費(fèi)了1個(gè)小時(shí)基本就閱讀過了莱坎,我的英文基礎(chǔ)其實(shí)很差衣式。附上鏈接:鏈接:...
    lonecolonel閱讀 9,856評(píng)論 3 1
  • =========================================================...
    _燈火闌珊處閱讀 2,399評(píng)論 0 3
  • 標(biāo)簽: socat squid 介紹 內(nèi)網(wǎng)服務(wù)器是指只有內(nèi)網(wǎng)ip而沒有公網(wǎng)ip的服務(wù)器。 一般情況下內(nèi)網(wǎng)服務(wù)器無法...
    傑仔閱讀 8,806評(píng)論 0 1