当前位置: 首页 > news >正文

python爬虫实践

两个python程序的小实验(附带源码)

题目1

爬取http://www.gaosan.com/gaokao/196075.html 中国大学排名,并输出。提示:使用requests库获取页面的基本操作获取该页面,运用BeautifulSoup解析该页面绑定对象soup,soup.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, timeout=30)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/2021"html = 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()))

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C++】入门基础知识
  • 用VBA在Word中随机打乱单词表,进行分列
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • 数据守护者的秘籍:SQL Server数据库备份验证全攻略
  • python实现小游戏——植物大战僵尸(魔改版本)
  • Apache Kylin入门指南
  • 链表篇: 04-寻找两个链表的第一个公共结点
  • [极客大挑战 2019]BuyFlag1
  • A+B V2 51Nod - 3415
  • 实验4-1-7 特殊a串数列求和
  • python 中的 join()
  • 【第二章】软件开发生命周期-瀑布模型:详细解析与案例分析
  • python使用venv生成虚拟环境
  • Flink DataStream API编程入门
  • 立项技术路线选择
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • eclipse的离线汉化
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • JavaScript 基础知识 - 入门篇(一)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React as a UI Runtime(五、列表)
  • React-redux的原理以及使用
  • React中的“虫洞”——Context
  • Redis学习笔记 - pipline(流水线、管道)
  • SpringCloud集成分布式事务LCN (一)
  • Vue全家桶实现一个Web App
  • vue自定义指令实现v-tap插件
  • 关于Java中分层中遇到的一些问题
  • 一道闭包题引发的思考
  • AI算硅基生命吗,为什么?
  • HanLP分词命名实体提取详解
  • 阿里云API、SDK和CLI应用实践方案
  • ​VRRP 虚拟路由冗余协议(华为)
  • #WEB前端(HTML属性)
  • #微信小程序:微信小程序常见的配置传值
  • (MATLAB)第五章-矩阵运算
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (自适应手机端)行业协会机构网站模板
  • .FileZilla的使用和主动模式被动模式介绍
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core 2.1路线图
  • .NET CORE Aws S3 使用
  • .net core 的缓存方案
  • .NET IoC 容器(三)Autofac
  • .NET实现之(自动更新)
  • .sdf和.msp文件读取
  • ::什么意思
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ 蓝桥杯Web真题 ]-布局切换
  • [ 数据结构 - C++] AVL树原理及实现
  • [20161101]rman备份与数据文件变化7.txt