Dota2基輔特錦賽正在進行,上班時候又不能看比賽,打開遊戲網站吧,也不太好,寫了個小腳本抓取178上的比分扳,看下比賽結果,也是極好的吧。。。php
比分扳的數據是js生成的,那就直接傳入參數,獲取內容web
仔細一看這參數還挺多,Headers中參數標籤
再窗口中直接打開鏈接:api
使用正則查找數據吧網站
from bs4 import BeautifulSoup import re import requests data={ 'endpoint':'three', 'ids':'100000282,100000930,100000924,100000918,100000843', 'callback':'jQuery112408214716044557848_1493194419017', '_':'1493194419018' } web_data = requests.get("http://wxapi.178.com/vpgame_proxy.php",params=data) soup = BeautifulSoup(web_data.text,'lxml') event_list = str(soup).split('}]}}')[:-1] def get_events(strings): events_name = re.findall(r'"tournamentName":"(.*?)"',strings) events_date = re.findall(r'(\d{4}-\d{2}-\d{2})',strings) events_status = re.findall(r'"status":"(\w+)"',strings) l_teams = re.findall(r'"leftTeam":"(.*?)"',strings) r_teams = re.findall(r'"rightTeam":"(.*?)"',strings) l_scores = re.findall(r'"leftTeamScore":"(\d+)"',strings) r_scores = re.findall(r'"rightTeamScore":"(\d+)"',strings) print('|{0!s: ^37s}|{1!s: ^20s}|'.format(events_name[0], events_date[0])) print('{:-^60}'.format('-')) for events_statu,l_team,l_score,r_score,r_team in zip(events_status,l_teams,l_scores,r_scores,r_teams): print('|{0!s: ^8s}|{1!s: ^20}| {2!s: ^1s} - {3!s: ^1s} |{4!s: ^20s}|'.format(events_statu,l_team,l_score,r_score, r_team)) for i in event_list: get_events(i) print('{:-^60}'.format('-'))
執行結果spa
寫的比較粗糙,也沒有進行排序,湊合用吧code