Python爬取足球网站赛况

前言: 本次爬取数据本意为了作为学习决策树,但发现构造特征时因不了解足球赛制,难以构造出较好的特征。如果有小伙伴也对这个感兴趣的话就和我交流交流吧~~

代码:

'''
#get_tata.py
获取uhchina.com的14-15西甲赛况(未作清洗)
关键是观察爬取数据的情况
'''

from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd
BASE_URL = 'http://www.uhchina.com/2014-2015xijia/{n_lun}lun.htm'
n_lun_limit = 38
title_name = ['Turn','Time','Home_team','Score','Visitor_team','让球全','让球半','大小全','大小半','半场','谁会赢']
#获取每一个url的比赛数据
def get_content(url):
html = urlopen(url).read()
bsObj = BeautifulSoup(html,'lxml')
records = [dd for dd in bsObj.select('.maintable td')]
text_record =[]
matchs = []
for record in records:
#print(record)
#print(record.get_text())
text_record.append(record.get_text())
del text_record[:13]
for i in range(0,int(len(text_record)/11)):
train_records = text_record[i * 11:(i + 1) * 11]
matchs.append(train_records)
return matchs
#返回url
def get_url(n_lun):
url = BASE_URL.format(n_lun = n_lun)
return url
#最后获取数据存储为scv格式
def final_get():
file = open('D:/Python/PythonProject/football_mining/matches_data.csv','w')
final_data = []
for n_lun in range(1,n_lun_limit + 1):
my_matches = get_content(get_url(n_lun))
#print(my_matches)
for my_match in my_matches:
final_data.append(my_match)
df_final_data = pd.DataFrame(columns = title_name,data = final_data)
df_final_data.to_csv(file)

分析:
本次采集所用的包

from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd

这里是我根据数据具体情况添加的,用来规范。小伙伴可以具体自己的情况。

del text_record[:13]
for i in range(0,int(len(text_record)/11)):
train_records
= text_record[i * 11:(i + 1) * 11]

这里提供url链接,同样,小伙伴可以自己观察自己网页的特征,一般有Base部分(即不会改变的),和可变部分。例如本例的比赛轮次会在url链接体现。

def get_url(n_lun):
url = BASE_URL.format(n_lun = n_lun)
return url

最后获得每个链接的赛况后将其转化为csv文件

最后: 希望有志同道合的小伙伴一起做一下有趣的东西
———关注我的公众号,一起学数据挖掘————
Python爬取足球网站赛况_第1张图片

你可能感兴趣的:(数据采集)