解析网页元素
目标
本次挑战,我们需要使用 Python 访问软科世界大学排行榜来获取首页 30 所学校的信息。
为避免目标网站的内容发生变化,我们使用保存之后的网页进行实验。
链接如下:
https://labfile.oss.aliyuncs.com/courses/4070/rank2021.html
网页内容如图所示:
要求
- 脚本文件路径为 /home/project/rank2021.py。
- 目标网站为:https://labfile.oss.aliyuncs.com/courses/4070/rank2021.html
- 请安装 BeautifulSoup 模块,确保脚本能够正常运行。
- 脚本需要实现对目标网站的抓取和解析,并打印输出。
输出共 30 行。 - 最终运行效果如下:
题解:
import re, requests
from lxml import html
etree = html.etree
daxue = []; guojia = []; paiming = [] ; zongfen = []
res = requests.get("https://labfile.oss.aliyuncs.com/courses/4070/rank2021.html", )
res.encoding="utf-8"
tree = etree.HTML(res.text)
trs = tree.xpath('.//div [@class="logo"]/img')
for x in trs:
cc = x.attrib.get('alt')
daxue.append(cc)
trs = tree.xpath('.//tr')
for x in trs[1:]:
l = x.xpath ('.//td' )
z = l[2].text
z = z.replace(" ", "").replace("\n", "")
guojia.append(z)
z = l[3].text
z = z.replace(" ", "").replace ("\n", "")
paiming.append(z)
z = l[4].text
z = z.replace(" ", "").replace ("\n", "")
zongfen.append(z)
for x in range(1, 31):
r = []
r.append(str(x))
r.append(daxue[x-1])
r.append(guojia[x-1])
r.append(paiming[x-1])
r.append(zongfen[x-1])
print(r)
特定年份日期处理
介绍
日期和时间是我们日常生活中非常重要的概念,它影响着我们生活的方方面面,所以对于日期和时间的正确处理就至关重要。
目标
本节挑战,我们需要编写一个脚本程序,打印输出 2021 年所有周六的日期。
要求
- 文件的路径为 /home/project/Saturday.py。
- 每行一个日期,打印输出的行数与2021 年周六的总个数相等。
- 最终效果图(部分截图)如下:
题解:
from datetime import datetime, timedelta
start_time = "2021-01-01"
end_time = "2022-01-01"
std = datetime.strptime(start_time, "%Y-%m-%d")
etd = datetime.strptime(end_time, "%Y-%m-%d")
while std < etd:
if std.isoweekday() == 6:
print(std.strftime("%Y-%m-%d"))
std = std + timedelta(days=1)
任意年份日期处理
介绍
日期和时间是我们日常生活中非常重要的概念,它影响着我们生活的方方面面,所以对于日期和时间的正确处理就至关重要。
目标
本节挑战,我们需要编写一个脚本程序,打印输出任意年份所有周日的日期。
蓝桥云课课程页: https://www.lanqiao.cn/courses/
要求
- 文件的路径为 /home/project/Sunday.py。
- 每行一个日期,打印输出的行数与对应年份周日的总个数相等。
- 最终效果图(部分截图)如下:
题解
from datetime import datetime, timedelta
import sys
year = int(sys.argv[1])
start_time = "%s-01-01" % (year,)
end_time = "%s-01-01" % (year + 1,)
std = datetime.strptime(start_time, "%Y-%m-%d")
end = datetime.strptime(end_time, "%Y-%m-%d")
while std < end:
if std.isoweekday() == 7:
print(std.strftime("%Y-%m-%d"))
std = std + timedelta(days=1)
标签:-%,std,01,题解,赛题,datetime,蓝桥,time,append
From: https://blog.csdn.net/a541972321/article/details/122691426