财经门户网站建设,叮当设计网站,代做外国空间网站,提高网站建设水平意见方案两个python程序的小实验#xff08;附带源码#xff09;
题目1
爬取http://www.gaosan.com/gaokao/196075.html 中国大学排名#xff0c;并输出。提示#xff1a;使用requests库获取页面的基本操作获取该页面#xff0c;运用BeautifulSoup解析该页面绑定对象soup#x…两个python程序的小实验附带源码
题目1
爬取http://www.gaosan.com/gaokao/196075.html 中国大学排名并输出。提示使用requests库获取页面的基本操作获取该页面运用BeautifulSoup解析该页面绑定对象soupsoup.title, soup.string, soup.get_text()。pd.DataFrame创建二维数据。 \# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import bs4def getHTMLText(url):try:r requests.get(url, timeout30)r.raise_for_status()r.encoding r.apparent_encodingreturn r.textexcept:return def fillUnivList(ulist, html):soup BeautifulSoup(html, html.parser)for tr in soup.find(tbody).children: # 先检索到tbody标签if isinstance(tr, bs4.element.Tag):tds tr(td) # 查询tr中的td标签等价于tr.find_all(td)\# 新版的排名封装在a标签中所以这里需要具体到查找属性为name-cn的a标签并存储其字符串即大学的中文名称a tr(a,name-cn)ulist.append([tds[0].string.strip(),a[0].string.strip(),tds[2].text.strip(),tds[4].string.strip()]) # 使用二维列表存储信息
def printUnivList(ulist, num):tplt {0:^10}\t{1:{4}^10}\t{2:^10}\t{3:^10}\# {3}表示需要填充时使用format的第三个变量进行填充即使用中文空格print(tplt.format(排名, 学校名称, 地区, 总分, chr(12288)))for i in range(num):u ulist[i]print(tplt.format(u[0], u[1], u[2], u[3], chr(12288)))def main():uinfo []url https://www.shanghairanking.cn/rankings/bcur/2021html getHTMLText(url)fillUnivList(uinfo, html)printUnivList(uinfo, 20) # 20 univif __name__ __main__:main()题目2:
从新闻中爬取NBA“西部球队”排名。https://nba.hupu.com/standings
如下图输出
import requests
from bs4 import BeautifulSoupurl https://nba.hupu.com/standings
response requests.get(url)
\# 打印响应内容用于检查是否正确获取了网页数据
print(response.text)
soup BeautifulSoup(response.text, html.parser)\# 确保找到的table不是None
table soup.find(table, class_players_table) # 注意这里使用了class_因为class是Python关键字
if table is None:print(没有找到class为rank-table的table请检查网页结构或选择器是否正确。)
else:rows table.find_all(tr)for row in rows:cells row.find_all(td)if cells: # 确保td元素存在才进行处理print( .join(cell.text.strip() for cell in cells if cell.text.strip()))print( .join(cell.text.strip() for cell in cells if cell.text.strip()))