文章目录
- 🕐I'm coming~
- 🕑我写了个啥?
- 🕔咋写的?
- 🕘代码供上
- 🕛 See you next time
专栏 |
---|
Python零基础入门篇🔥 |
Python网络蜘蛛🔥 |
Python数据分析 |
Django基础入门宝典🔥 |
小玩意儿🔥 |
Web前端学习 |
tkinter学习笔记 |
Excel自动化处理 |
🕐I’m coming~
若有文章有错误,请在评论区中说出来哦,非常感谢✌️
许久不见,甚是想念呐❗️
偷点闲时时光敲敲代码,写写文章,偷偷更新《小玩意儿》专栏的文章。有一段时间没有写博客了,今日偷得闲时,敲下这篇文章,颇有些神清气爽、怡然自得、心情舒畅、高高兴兴……,好了,编不下去了😆
大家都知道,学期末是大学牲最忙的时候,都忙着复习(预习),这段期间,起早贪黑,三更灯火五更鸡,正是……,总而言之,为了通过(应付)考试,我们很是努力呐,恨不得将时间掰成两半,一半用来复习,另一半也用来复习……,以上是本博主近段没有更近文章的主要原因😭
现在,趁着时间没注意,偷偷拿一点来用,等会它发现了就得逼着睡觉了,所以我得赶紧敲完这篇文章,好了,言归正传,请各位兄弟姐妹往下瞧瞧👀
🕑我写了个啥?
这次的代码主要实现的是获取2022卡尔塔世界杯⚽️中所有队伍的阵容信息,其中包括各个队伍里的门将、后卫、前锋、中场的对应球员名字信息,然后将信息整理分析,保存到excel表格中展示。也算是给各位爱看球的一个小小福利😜
🕔咋写的?
目标网站👉2022卡尔塔世界杯各队阵容
👉网页分析和爬取思路:通过分析网页,可以观察到所有信息都放在p标签中,所以通过requests模块爬取信息,最后将数据进行清洗(考验代码逻辑的时候到了😬),获取我们想要的数据。数据获取成功后便可使用openpyxl模块将信息写入excel表格。
咱就是说敲完代码之后,这信息嗖的一下,简直就是,一下,就好,结果如下图所示👇
🕘代码供上
import requests
from lxml import etree
import openpyxl
from openpyxl.styles import Side, Font, Alignment, Border, PatternFill# 获取各个国家足球队信息
def get_info():url = 'http://4p3.cn/article/73925.html'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'}res = requests.get(url, headers=headers)html = etree.HTML(res.content.decode('utf-8'))info = html.xpath('//dd[@id="pagecontent"]/p/text()')[2:]return info# 保存文件
def save_info(info):f = openpyxl.Workbook()sheet = f.create_sheet('2022世界杯')# 设置列宽sheet.column_dimensions['A'].width = 52sheet.column_dimensions['B'].width = 52sheet.column_dimensions['C'].width = 52sheet.column_dimensions['D'].width = 52for i in range(len(info)):if '国家队' in info[i]:max_row = sheet.max_row + 1 # 获取最大行数# 设置标题表格样式for k in sheet[f'A{max_row}:D{max_row}']:for j in k:j.alignment = algnj.border = borderj.font = font_titlej.fill = pattren_fill# 合并单元格sheet.merge_cells(f'A{max_row}:D{max_row}')# 写上标题并设置行高sheet.cell(max_row, 1).value = info[i][:-1] + '(' + info[i+1] + ')'sheet.row_dimensions[max_row].height = 30# 写上球员类型for k in sheet[f'A{max_row + 1}:D{max_row + 1}']:for j in k:j.alignment = algnj.border = borderj.font = font2j.fill = pattren_fill1type1 = ['门将', '后卫', '中场', '前锋']# 设置行高sheet.row_dimensions[max_row+1].height = 20for k in range(len(type1)):sheet.cell(max_row+1, k+1).value = type1[k]# 获取门将中的球员goalkeeper = info[i+2].split(':')[1].split('、' if ',' not in info[i+2] else ',')# 获取后卫中的球员rear_guard = info[i+3].split(':')[1].split('、' if ',' not in info[i+2] else ',')# 获取中场的球员midfield = info[i+4].split(':')[1].split('、' if ',' not in info[i+2] else ',')# 获取前锋的球员vanguard = info[i+5].split(':')[1].split('、' if ',' not in info[i+2] else ',')# 取出不同类型的球员人数max_people = max([len(goalkeeper), len(rear_guard), len(midfield), len(vanguard)])for k in sheet[f'A{max_row + 2}:D{max_row + 2 + max_people}']:for j in k:j.alignment = algnj.border = borderj.font = font# 将球员信息写入表格for k in range(len(goalkeeper)):sheet.cell(max_row+2+k, 1).value = goalkeeper[k]for k in range(len(rear_guard)):sheet.cell(max_row+2+k, 2).value = rear_guard[k]for k in range(len(midfield)):sheet.cell(max_row+2+k, 3).value = midfield[k]for k in range(len(vanguard)):sheet.cell(max_row+2+k, 4).value = vanguard[k]f.save('2022世界杯球队信息.xlsx')if __name__ == '__main__':# 设置字体的样式algn = Alignment(vertical='center', horizontal='center')side = Side(style='thin', color='000000')border = Border(right=side, left=side, top=side, bottom=side)# 球员字体font = Font(name='宋体', size=12)# 球员类型字体font2 = Font(name='宋体', size=14)# 标题的字体font_title = Font(name='宋体', size=16, color='ff0000', bold=True)# 表格填充——黄色pattren_fill = PatternFill(fill_type='solid', fgColor='ffff00')# 表格填充——绿色pattren_fill1 = PatternFill(fill_type='solid', fgColor='AACF91')info = get_info()save_info(info)
🕛 See you next time
好了,今天就敲到这咯~
如果喜欢这篇文章,记得 点赞👍 收藏🌈 再来一个小小的关注哦💖
你们的支持就是我前进的最大动力💪
咱们下次再见👀
peace~