爬虫案例:中国大学排名及网站更新后爬取问题解决(2021.3.28)

news/2024/5/21 0:14:35/文章来源:https://blog.csdn.net/qq_45720042/article/details/115284379

解答标签string属性Tag.string方法获取不了的问题

本次爬虫的URL(上海软科中国大学排名):
https://www.shanghairanking.cn/rankings/bcur/2020

案例来源:中国大学慕课嵩天老师的“Python网络爬虫与信息提取
由于该课程的录制时间较早,而案例爬取网站做了部分的代码修改,导致课程中的爬虫案例的部分代码已不适用于今天网站的内容结构,所以就有了开始学习爬虫的你来到了CSDN,哈哈哈哈。

课程中的案例代码这里就不展示了,直接上问题
由于网页中的这部分做了一定的修改,所以这样的方式已不再适用
由于网页中的这部分做了一定的修改,所以这样的方式已不再适用。
接下来我们找到网页中大学排名的Html代码对应的位置,看看是怎样的。
在这里插入图片描述
这里和课程文档内的网页对比一下,你应该就发现了问题的所在。以前我们想要爬取的网页完全是直接就在td标签内的,因此可以很方便快捷的照抄案例代码就能爬取数据。
在这里插入图片描述
在这里插入图片描述
这里可以看出不能再使用Tag.string来获取当前特殊情况下的String属性。
但是我们想要获取数据就需要从这里打印输出数据,于是我想了一个办法把td标签里的内容强制转换为str类型----->输出。

复习一下知识点

// strip()删除字符串开头和结尾的空白
.strip()
//删除左边的空白
.lstrip()
//删除右边的空白
.rstrip()
//<tag>所有的儿子节点存入列表
Tag.contents   

在这里插入图片描述
到这其实就差不多了,只要能够想到这一点,问题就能迎刃而解了。

我的完整代码代码如下:

import requests
import bs4
from bs4 import BeautifulSoupdef getHTMLText(url, headers):try:r = requests.get(url=url, headers=headers, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingsoup = BeautifulSoup(r.text,"html.parser")return soupexcept:return ""def fillUnivList(ulist, html):for tr in html.find("tbody").children:if isinstance(tr,bs4.element.Tag):tds = tr('td')rank = str(tds[0].contents[0]).strip()school = str(tds[1].a.string)score = str(tds[4].contents[0]).strip()cla = str(tds[5].string).strip()ulist.append([rank, school, score, cla])return ulistdef printUnivList(ulist,num):tplt = "{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}"print(tplt.format("排名", "学校名称", "总分", "class"))for i in range(num):u = ulist[i]print(tplt.format(u[0], u[1], u[2], u[3]))if __name__ == "__main__":info = []headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"}url = "https://www.shanghairanking.cn/rankings/bcur/2020"html = getHTMLText(url,headers)info = fillUnivList(info, html)printUnivList(info,30)

结果展示如下:
在这里插入图片描述
一起学Python,一起写代码


原代码出现无法找到 tbody 的标签的报错。

经反馈,原网站内容无法按照上面的源码爬取,故作了以下修改,从network下的Xpath抓包获取数据

import requests
import json
import pandas as pddef getHTMLText(url, headers):try:r = requests.get(url=url, headers=headers, timeout=30)r.raise_for_status()r.encoding = r.apparent_encoding# soup = BeautifulSoup(r.text,"html.parser")data_json = json.loads(r.text)return data_json["data"]["rankings"]except:print("爬取失败")def get_data(jdata):# data = pd.DataFrame(jdata)# 获取排名、大学、总分、等级信息ind = pd.DataFrame([i["indData"]["59"] for i in jdata])rank = pd.DataFrame([i["rankOverall"] for i in jdata])school = pd.DataFrame([i["univNameCn"] for i in jdata])score = pd.DataFrame([i["score"] for i in jdata])df = pd.concat([rank, school, score,ind], axis=1,)df.columns = ["排名", "学校名称", "总分", "class"]return dfdef printRank(uinfo,num):tplt = "{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}"print(tplt.format("排名", "学校名称", "总分", "class"))for i in range(num):u = uinfo.loc[i]print(tplt.format(u[0], u[1], u[2], u[3]))if __name__ == "__main__":# info = []headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.75"}url = "https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2020"html = getHTMLText(url,headers)info = get_data(html)printRank(info,20)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_900127.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐有关git的一张图片和2个网站

原创文章属于《Linux大棚》博客&#xff0c;博客地址为http://roclinux.cn。 文章作者为 rocrocket。 为了防止某些网站的恶性转载&#xff0c;特在每篇文章前加入此信息&#xff0c;还望读者体谅。 [正文开始] 一张描述git数据迁移的示意图&#xff0c;很清晰&#xff0c;对…

studio styles网站download按钮无法使用

解决方法&#xff1a;点击F12&#xff0c;查看网页源码。选择选取页面中的元素&#xff0c;选择download按钮&#xff0c;如下图所示&#xff1a; downloadExisting后面的数字代表主题的ID。 在网站中输入https://studiostyl.es/settings/downloadScheme/2372?versionnull 即可…

支付宝电脑网站支付

准入条件 营业执照通过ICP备案的网站使用沙箱 沙箱接入&#xff1a;直接使用沙箱提供的开发参数&#xff0c;无需进行应用的创建&#xff0c;绑定&#xff0c;上线和签约 node.js&#xff1a; 基于chrome v8引擎的JavaScript运行环境使用了一个事件驱动&#xff0c;非阻塞I…

微信公众号文章转pdf下载,不难也不太容易,磕磕绊绊倒是不少如何用xpath保存网站源码;如何精简你的文章请求链接;如何将文章转化为pdf文件,不乱码,不报错

目录 敲黑板抓包分析看碟下菜&#xff0c;确认分析思路锁定有效数据包分析响应信息和请求连接 黑板报如何用xpath保存网站源码如何精简你的文章请求链接如何将文章转化为pdf文件&#xff0c;不乱码&#xff0c;不报错 总结 敲黑板 本章主要运用的知识点&#xff1a; 如何用xp…

在线网站的加密混淆JS的分析技巧

混淆后的js 通常来说js加密后犹如天书&#xff0c;各种变量方法都变为了abc&#xff0c;在没有js map文件的情况下更是无法进行js代码调试与定位(或者不方便),本文为大家带来一种定位与调试技巧. 思路如下: 1.在源网站下载需要调试的js代码. 2.使用广告屏蔽插件将原有网站js…

镇江SEO推广:内容页收录很少,怎么办?

在做镇江SEO推广的时候&#xff0c;我们与本地SEO人员相互交流与学习的时间相对较少&#xff0c;有什么问题&#xff0c;都需要自己亲身实践得出经验&#xff0c;进行解决。 其中&#xff0c;在镇江做SEO推广最常见的问题就是&#xff1a;内容页收录的问题&#xff01; 那么&a…

镇江网络SEO:如何让百度收录网站,提高竞争力?

镇江网络SEO&#xff0c;经常会讨论的问题就是如何让百度收录网站&#xff0c;这是目标站点参与排名的一个重要因素&#xff0c;如果网页收录不能很好的达到一定数量级。 那么&#xff0c;很难在后期的竞争中&#xff0c;很难支撑高竞争度的关键词去排名。 那么&#xff0c;镇…

镇江百度SEO:网站收录大量页面,为什么权重一直为0?

对于镇江百度SEO而言&#xff0c;我们经常会面临一个窘境&#xff0c;就是明明网站被收录大量页面&#xff0c;可确没有任何一个排名&#xff0c;网站的权重也一直为零&#xff0c;这让很多镇江的站长头疼。 镇江百度SEO&#xff1a;网站收录大量页面&#xff0c;为什么权重一直…

镇江SEO搜索优化:百度秒收录小方法!

镇江SEO搜索优化的圈子相对较小&#xff0c;很多SEO人员喜欢追求极致的SEO策略&#xff0c;比如&#xff1a;百度秒收录&#xff0c;而实际上&#xff0c;并没有严格意义上的秒收录。 所谓的百度秒收录&#xff0c;只是一个形象的比喻&#xff0c;达到分钟级的收录&#xff0c…

镇江SEO排名:为什么百度掉收录?

在做镇江SEO排名的过程中&#xff0c;偶尔我们会遇到索引量开始缓慢下降的情况&#xff0c;在经过一段时间&#xff0c;就会出现百度掉收录的问题&#xff0c;这让很多SEO人员产生疑问。 明明&#xff0c;我们没有做过任何负面的SEO操作&#xff0c;怎么仍然还会出现百度掉收录…

镇江SEO搜索引擎优化:为什么百度收录差?

做镇江SEO搜索引擎优化的时候&#xff0c;我们偶尔会遇到百度收录差的情况&#xff0c;并不是说百度不收录我们的网页&#xff0c;而是收录进程很缓慢&#xff0c;比如&#xff1a; ① 有的文章刚发布&#xff0c;没几分钟就收录。 ② 有的文章发布几天&#xff0c;才收录。 …

镇江SEO顾问:讲述,怎么查百度收录!

作为镇江SEO顾问&#xff0c;我们每天面对大量的镇江SEO网站的优化&#xff0c;你需要监控每个网站的各项指标&#xff0c;其中&#xff0c;查百度收录&#xff0c;是一个重要的工作。 它在做网站评估与诊断的时候&#xff0c;具有重要的意义。 那么&#xff0c;镇江SEO顾问&a…

镇江SEO云优化:如何提高百度收录率?

所谓的镇江SEO云优化&#xff0c;主要是指在镇江做SEO&#xff0c;利用SEO“云”策略&#xff0c;提高百度收录率&#xff0c;他相当于创建一个大的蜘蛛池&#xff0c;吸引大量的百度蜘蛛不断访问这个容器。促使被投放到这个容器中的URL&#xff0c;有效的被百度收录。 那么&am…

镇江企业SEO:百度关键词收录小妙招!

对于镇江企业SEO而言&#xff0c;我们经常会讨论&#xff1a;百度关键词收录的问题。 通常&#xff0c;针对初创的镇江企业而言&#xff0c;我们通常建议选择适当的关键词&#xff0c;而后在考量百度收录的问题&#xff0c;因此网站建设初期&#xff0c;选择关键词显得格外重要…

镇江SEO外包:如何识别百度免费收录的坑?

对于在镇江做SEO而言&#xff0c;我们通常情况下&#xff0c;由于人力资源与时间精力有限&#xff0c;我们通常选择镇江SEO外包&#xff0c;将自己的业务&#xff0c;交给镇江SEO机构&#xff0c;代理完成。 但在实际交流与沟通的过程中&#xff0c;镇江SEO外包的相关团队经常…

镇江SEO咨询:如何让百度收录快?

早些年&#xff0c;在做镇江SEO咨询的时候&#xff0c;我们经常会被问及一个问题&#xff0c;那就是如何让百度收录快&#xff0c;实际上&#xff0c;理论上它受网站的多重因素影响&#xff0c;虽然让百度收录快的流程基本相差无二&#xff0c;但根据自身网站的不同&#xff0c…

视频教程-SEO实战课程之站群优化-其他

SEO实战课程之站群优化 7年开发经验&#xff0c;Web全栈工程师&#xff0c;擅长php,js,mysql,postgresql&#xff0c;开发作品有富群兴SEO站群系统&#xff0c;富群兴电商ERP 黄富庆 18.00 立即订阅 扫码下载「CSDN程序员学院APP」&#xff0c;1000技术好课免费看 APP订阅课程&…

购买老域名,利用桔子seo来查找域名的历史快照信息

一个好的域名&#xff0c;有利于排名。现在越来越多的站点选择老域名来进行建站。 在购买老域名时&#xff0c;如果选择一个好的老域名&#xff0c;特别是域名的历史数据&#xff0c;比如锚文本链接、年龄等。有下面几个维度&#xff0c;可以来作为挑选老域名的标准&#xff1a…

用Gitee Pages服务在线预览vue3前端项目:静态网站+多级路由+history模式(踩坑)

目录 目标与前提 vue打包、预览遇到的坑以及原因 坑①&#xff1a;静态网站打开一片空白 坑②&#xff1a;子路由刷新或直接输入时&#xff0c;网页一片空白或404 坑③&#xff1a;首页加载时间过长 坑④&#xff1a;线上预览地址出错时&#xff0c;不显示404页面 坑⑤&…

《大型网站技术架构核心原理与案例分析》读后感

初读此书的感觉 看完这书我的第一想法就是把书名改为“网站技术架构导论”&#xff0c;没什么别的意思&#xff0c;只是觉得这名字更贴切点&#xff0c;当然作者肯定是不会用这种名字&#xff0c;否则没那个出版社敢去出版了。虽然把一个金光闪闪的名字给换成了low卡&#xff0…