python作业爬取xxx大学排名榜单,python-selenium爬虫解决(本文章仅学习,网站数据也是公开的)

文章目录

前言

一、分析网页

二、需要实现过程

三、代码实现

1.引入库

2.全部代码

3.效果呈现


前言

python作业爬取xx大学排行榜数据,老师给你的教程是非常久远的教程,你会发现与现在的网站有所差别,特别是在浏览器开发者工具中抓包xhr文件,已经找不到榜单数据文件了。本文章主要介绍用python-selenium-webdriver 实现对网页榜单数据的抓取。

代码已经上传我的  gitee库 可自行下载使用。


一、分析

进入网页打开开发者工具,元素检查自己需要的数据 ‘清华大学’,查看它的元素代码,如下:

 class="name-cn" data-v-b80b4d60="">清华大学 </a>

类似检查所有数据的元素,进行对比,发现其相同类的元素头一致,这样后续代码可以用re提取。

为避免每一页的数据对应元素不一致,检查第二页元素 ‘大连理工大学’ ,如下:

 href="/institution/dalian-university-of-technology" class="name-cn">大连理工大学 </a>

发现与第一页元素头不一致,返回第一页再次查看‘清华大学’,如下:

 href="/institution/tsinghua-university" class="name-cn">清华大学 </a>

发现数据的元素又一致了 ,后续页面也一致,故在使用python-selenium爬虫时,进入网页先进入第二页,再返回第一页,使其页面数据对应元素一致。

所有数据对应网页代码元素如下:
   经过观察发现大学级别有些学校没有,故在爬虫过程中,没有的就更改为无,方便后续写入表。

# 大学名称
<a data-v-b80b4d60="" href="/institution/tsinghua-university" class="name-cn">清华大学 </a>
# 英文名称
<a data-v-f9104fdc="" href="/institution/tsinghua-university" class="name-en">Tsinghua University </a>
# 大学级别
<p data-v-3fe7d390="" class="tags">双一流/985/211</p>
# 学校所在省份
<td data-v-3fe7d390="" class="">北京<!----></td>
# 学校类型
<td data-v-3fe7d390="" class="">综合<!----></td>
# 总分
<td data-v-3fe7d390="" class="">999.4</td>
# 办学层次
<td data-v-3fe7d390="" class="">37.6</td>

因为需要榜单全部数据,所以要把所有页数里面的数据全部提取出来。需要用python-selenium模拟翻页,后又经发现,在一些页中的 下一页 按钮的xpath地址(xpath是用来定位按钮在页面什么位置)会有所变化,下一页按钮和xpath内容如下:

下一页按钮 xpath 地址变更
1-3:    //*[@id="content-box"]/ul/li[9]/a
4:      //*[@id="content-box"]/ul/li[10]/a
5-16:   //*[@id="content-box"]/ul/li[11]/a
17:    //*[@id="content-box"]/ul/li[10]/a
18:    //*[@id="content-box"]/ul/li[9]/a
19:    //*[@id="content-box"]/ul/li[9]/a
20:    //*[@id="content-box"]/ul/li[9]/a

二、需要实现过程

图解:

三、代码实现

1.引入库

代码如下:

import time

import re

from selenium.webdriver

import ActionChains from selenium import webdriver

2.全部代码

代码如下:

import timeimport re
from selenium.webdriver import ActionChains
from selenium import webdriverif __name__ == '__main__':chrome_options = webdriver.ChromeOptions()chrome_options.add_argument('--no-sandbox')  # 给予root执行权限chrome_options.add_argument('--headless')  # 隐藏浏览器运行driver = webdriver.Chrome(options=chrome_options)# 地址自行输入url = ''driver.get(url)time.sleep(1)action = ActionChains(driver)# 初始化界面元素 可以发现直接进入 第一页 与 后面页的元素格式不一样 但如果进入第一页后点击进入第二页# 再点击进入第一页,第一页就和后面的页元素一致了e = driver.find_element('xpath', '//*[@id="content-box"]/ul/li[9]/a')action.click(e).perform()e = driver.find_element('xpath', '//*[@id="content-box"]/ul/li[1]/a')action.click(e).perform()# 最终存储校园排行榜数据列表list_information = []# 20 表示总页数for j in range(0, 20):text = driver.page_source# print(text)list_yemian = re.findall('<tbody data-v-3fe7d390="">(.*?)</tbody>', text, re.S)[0]list_total = re.findall('<tr data-v-3fe7d390="">(.*?)</tr>', list_yemian, re.S)length = len(list_total)for i in range(0, length):list0 = list_total[i]# 大学中文名name_cn = re.findall('class="name-cn">(.*?) </a>', list0)# 大学英文名name_en = re.findall('class="name-en">(.*?) </a>', list0)# 大学级别tags = re.findall('class="tags">(.*?)</p>', list0)# 无级别 比如不是 985/211的学校# 空列表==falseif not tags:tags = ['无']# 大学所在省市 和 大学类型list_province_category = re.findall('<td data-v-3fe7d390="" class="">\n            (.*?)\n            <!----></td>',list0)# 大学总分score = re.findall('<td data-v-3fe7d390="" class="">\n            (.*?)\n          </td>', list0)# 办学层次School_level = re.findall('<td data-v-3fe7d390="" class="">\n                    (.*?)\n                </td>',list0)list_0 = name_cn + name_en + tags + list_province_category + score + School_levellist_information.append(list_0)# print(list_information)if (0 <= j <= 2) or (17 <= j <= 19):xpath = '//*[@id="content-box"]/ul/li[9]/a'elif j == 3 or j == 16:xpath = '//*[@id="content-box"]/ul/li[10]/a'else:xpath = '//*[@id="content-box"]/ul/li[11]/a'e = driver.find_element('xpath', xpath)action.click(e).perform()# print(len(list_information))driver.quit()result = open('data.xls', 'w', encoding='utf-8')result.write('大学名称\t英文名\t大学级别\t所在省市\t大学类型\t总分\t办学层次\n')for m in range(0, len(list_information)):for n in range(0, len(list_information[m])):result.write(str(list_information[m][n]))result.write('\t')result.write('\n')result.close()print('数据采集完成!!')

3.效果呈现


都看到这里来了,如果觉得有用就留下你的赞吧!!!

python作业爬取xxx大学排行相关推荐

  1. python爬虫爬取最好大学网排名分析地区大学数量分布并绘制柱状图和词云

    本人也是初学者,本博客用于python初学者参考使用. 分析网页 本次爬取的是最好大学网软科中国最好大学排名2018:http://www.zuihaodaxue.cn/zuihaodaxuepaim ...

  2. 使用python爬虫爬取最好大学网大学排名实例

    使用requests库和BeautifulSoup库实现对最好大学网大学排名信息爬取 链接:http://www.zuihaodaxue.com/Greater_China_Ranking2019_0 ...

  3. Python爬虫--爬取最好大学网学校信息

    欢迎参观我的个人博客:L'ZXX_Blog 首先给出网址: 最好大学网 1.我们先来看网站信息: 2.我们再来审查元素,发现我们所需要的信息都在tbody标签中,一条信息在一个tr标签中,tr中的td ...

  4. python爬虫爬取豆瓣top排行图片

    爬虫是什么? "网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁 ...

  5. Python爬取中国大学排名,并且保存到excel中

    前言 以下文章来源于数据分析和Python ,作者冈坂日川 今天发的是python爬虫爬取中国大学排名,并且保存到excel中,当然这个代码很简单,我用了半小时就写完了,我的整体框架非常清晰,可以直接 ...

  6. Python爬虫新手入门教学(一):爬取豆瓣电影排行信息

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  7. python中国最好大学排名_国内大学排名如何?用Python爬取中国大学排名

    国内大学排名如何?用Python爬取中国大学排名准备阶段需要的库robots协议上代码代码框架*获取url信息*解析信息*输出数据*主函数结果 准备阶段 新手入门,不喜勿喷,这篇文章的内容其实也是在中 ...

  8. python爬取中国大学排名

    教程来自:[Python网络爬虫与信息提取].MOOC. 北京理工大学 目标:爬取最好大学网前50名大学 代码如下: import requests from bs4 import Beautiful ...

  9. 使用Python爬取“最好大学网”软科中国最好大学排名2019并做可视化分析

    使用Python爬取"最好大学网"软科中国最好大学排名2019并做可视化分析 简介 开发环境 爬取数据 1.获取网站页面 2.解析网页内容 3.存储数据 可视化分析 基本设置 显示 ...

最新文章

  1. 【怎样写代码】偷窥高手 -- 反射技术(五):深入窥视方法
  2. shell中#*,##*,#*,##*,% *,%% *的含义及用法
  3. 微信公众号api关注接口php,1.1 公众号接口绑定
  4. java/javaee基础面试问题
  5. Redis高可用方案-公私混合云
  6. 修复删除/var/lib/dpkg目录后,无法使用apt-get命令问题
  7. Qt使用invokeMethod反射机制实现进程间的通信
  8. AC自动机:多模式串匹配实现敏感词过滤
  9. 简单有趣的web项目_有趣而简单的电子项目书
  10. PAT乙级(1020 月饼)
  11. pytorch中unsqueeze()和squeeze()函数
  12. Java宝典app下载
  13. shell编程之【告警系统】
  14. 华为HG255d WEB刷OpenWrt
  15. SpringBoot中是如何创建WebServer的?
  16. 【问】安装SQL 2012R2时提示NetFx3
  17. 古体字与简体字对照表_简体字与繁体字对照表汇总
  18. 【Unity】Unity5.0之PBR/PBS详解
  19. php编程模块英文缩写_工作中常用的英文单词缩写
  20. 【转载】分页插件中关于PageInfo

热门文章

  1. java实现“两数之和”
  2. GA-BP遗传神经网络预测
  3. Microsoft Edge
  4. 大数据采集技术有哪些
  5. 袁崇焕的悲剧在于忘了自己是一颗棋子以为有autonomy
  6. 绝对正确!解释“超键、候选键和主键”之间的关系
  7. 安全背后: 浏览器是如何校验证书的
  8. xp系统扫描仪服务器,扫描仪驱动安装教程 xp系统装扫描仪步骤【详解】
  9. ~6. ccf 2021-09-1 数组推导
  10. fiddler抓包 破解微信投票