文章目录
- 🕐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 = 52
sheet.column_dimensions['B'].width = 52
sheet.column_dimensions['C'].width = 52
sheet.column_dimensions['D'].width = 52
for 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 = algn
j.border = border
j.font = font_title
j.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 = algn
j.border = border
j.font = font2
j.fill = pattren_fill1
type1 = ['门将', '后卫', '中场', '前锋']
# 设置行高
sheet.row_dimensions[max_row+1].height = 20
for 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 = algn
j.border = border
j.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~