爬虫3_爬取翻页URL不变的网站

之前实现了对大学排数据爬取:爬虫2_2019年549所中国大学排名.
近期复现代码,发现原网站升级,在翻页时,发现URL不改变,修改代码,使用网页自动化工具selenium实现对该类网站数据获取。

#-*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
import bs4
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains  # 鼠标操作
from selenium.webdriver.common.by import By
import timedef get_info(soup, _type, element, param=None):if _type == "find":if param is not None:params = dict([param.split('=')])res = soup.find(element, **params)else:res = soup.find(element)if res is not None:res = res.string.replace(" ", "").replace("\n", "")else:res = "None"if _type == "find_all":if param is not None:params = dict([param.split('=')])res = soup.find_all(element, **params)else:res = soup.find_all(element)        return resdef fillUnivList(html):soup = BeautifulSoup(html, 'html.parser')for tr in soup.find('tbody').children:if isinstance(tr, bs4.element.Tag):  # 如果为Tag类型td_list = tr.find_all('td')"排名"top = get_info(td_list[0], "find", "div", "class_=ranking")"logo"logo = td_list[1].find('img')["src"]"中文名/英文名"university_list = get_info(td_list[1], "find_all", "a")ch_name = university_list[0].string.replace("\n", "").replace("\t", "").strip(" ")en_name = university_list[1].string.replace("\n", "").strip(" ")"学校标签"tags = get_info(td_list[1], "find", "p")"学校地址"area = td_list[2].text.replace("\n", "").strip(" ")"学校行业"main = td_list[3].text.replace("\n", "").strip(" ")"综合分数"score = td_list[4].text.replace("\n", "").strip(" ")"办学层次"layer = td_list[5].text.replace("\n", "").strip(" ")print("{:<3}|{}|{:<80}|{}|{}|{}|{:<6}|{:<5}|{}".format(top, ch_name.ljust(14, "\u3000"),en_name, tags.ljust(12, "\u3000"), area.ljust(4, "\u3000"), main.ljust(4, "\u3000"), score, layer, logo))def action_run(driver, actions, info, by=By.ID, time_num=1):while 1:config_facesearch =  driver.find_element(by=by, value=info)if config_facesearch.is_displayed():actions.move_to_element(config_facesearch).click().perform()time.sleep(time_num) breakelse:print("%s is not find, watting..." % (info))time.sleep(1)if __name__ == "__main__":url = "https://www.shanghairanking.cn/rankings/bcur/2023"start = time.strftime("%H:%M:%S", time.localtime())driver = webdriver.Firefox()# driver = webdriver.Chrome()driver.maximize_window()driver.get(url)time.sleep(2)"鼠标操作"actions = ActionChains(driver)for i in range(20):html = driver.page_sourcefillUnivList(html)driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")  # 滚动至底部action_run(driver, actions, info="li[title='下一页']", by=By.CSS_SELECTOR)end = time.strftime("%H:%M:%S", time.localtime())print("用时%s - %s" % (start, end))# 关闭浏览器driver.quit()

代码运行结果

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

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

相关文章

活动图高阶讲解-06

31 00:01:52,300 --> 00:02:04,300 刚才讲了&#xff0c;活动里面是动作 32 00:02:04,300 --> 00:02:06,300 这个动作 33 00:02:06,300 --> 00:02:09,300 就可以看作活动的一个 34 00:02:09,300 --> 00:02:13,300 里面的实现的一个行为了 35 00:02:16,300 --&g…

vue项目跳转html页面

1. 把html页面以及相关文件放到public文件夹下&#xff08;目的和index.html同级&#xff09; 2.在vue项目中正常写跳转事件&#xff0c;只是路径写法需要注意

【理解指针(三)】

文章目录 一、数组名的理解&#xff08;1&#xff09;数组的地址与数组首元素地址的区别 二、使用指针访问数组&#xff08;1&#xff09;一维数组传参的本质 三、冒泡排序&#xff08;1&#xff09;什么是冒泡排序&#xff08;2&#xff09;写冒泡排序 四、结束语 一、数组名的…

堆排序(向下调整法,向上调整法详解)

目录 一、 二叉树的顺序结构 二、 堆的概念及结构 三、数组存储、顺序存储的规律 此处可能会有疑问&#xff0c;左右孩子的父节点计算为什么可以归纳为一个结论了&#xff1f; 四、大小堆解释 五、大小堆的实现&#xff08;向上和向下调整法&#xff09; 5.11向上调整法…

Unity Timeline学习笔记(1) - 创建TL和添加动画片段

Timeline在刚出的时候学习了一下&#xff0c;但是因为一些原因一直都没用在工作中使用。 版本也迭代了很久不用都不会用了&#xff0c;抽时间回顾和复习一下&#xff0c;做一个笔记后面可以翻出来看。 创建Timeline 首先我们创建一个场景&#xff0c;放入一个Plane地板&#…

Linux操作系统-08-常用的网络相关命令

1、ping命令 在linux下ping的话会一直ping下去&#xff0c;在windows下的话它会只ping四次就结束&#xff0c; [rootbastion ~]# ping 192.168.0.102 PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data. 64 bytes from 192.168.0.102: icmp_seq1 ttl64 time0.571 ms…

Linux - 线程互斥和互斥锁

文章目录 前言一、为什么要线程互斥原子性 二、互斥锁互斥锁的创建与销毁互斥锁进行互斥 前言 前几节课&#xff0c;我们学习了多线程的基础概念&#xff0c;这节课&#xff0c;我们来对线程互斥和互斥锁的内容进行学习。 一、为什么要线程互斥 首先我们要明白&#xff0c;对…

悲观锁(Pessimistic Locking)是一种数据库锁定机制

悲观锁&#xff08;Pessimistic Locking&#xff09;是一种数据库锁定机制&#xff0c;用于防止多个事务同时修改同一数据记录。以下是关于悲观锁的一些详细信息&#xff1a; 锁定数据&#xff1a;当事务对一条记录进行操作时&#xff0c;悲观锁会阻止其他事务对这条记录进行修…

Matplotlib数据可视化实战-1数据可视化Matplotlib基础

1.1绘图的一般过程&#xff1a; 1.导入相关库 2.生成、读入或计算得到数据&#xff1b; 3.根据需要绘制折线图、散点图、柱状图、饼状图、雷达图、箱线图、三维曲线/曲面以及极坐标系图形&#xff1b; 4.根据需要设置图形属性&#xff1b; 5.显示或保存绘图结果。 例如&…

c语言大小写字母的转换

通过ascll码表我们可以知道大写字母与小写字母相差32个数&#xff08;小写字母比大写字母大&#xff09;。因此&#xff0c;通过相加减32即可转换大小写字母。 #include <stdio.h>int main() {char ch c;char CH A;printf("%c\n", ch - 32);printf("%c…

计算机网络实验——学习记录

1. tun/tap模块&#xff1a;为Linux系统提供网络虚拟功能&#xff0c;tun位于网络OSI模型的三层&#xff08;网络层&#xff09;&#xff0c;tap位于网络的二层&#xff08;数据链路层&#xff09;。 1.1 验证是否包含tun/tap模块&#xff1a;modinfo tun&#xff1b; 1.2 验…

Python进程与线程开发

目录 multiprocessing模块 线程的开发 threading模块 setDaemon 死锁 线程间的通信 multiprocessing模块 运行python的时候&#xff0c;我们都是在创建并运行一个进程&#xff0c;(linux中一个进程可以fork一个子进程&#xff0c;并让这个子进程exec另外一个程序)。在pyt…

全局路径规划算法 - 动态规划算法Python实现

参考博客&#xff1a; &#xff08;1&#xff09;算法数据结构——动态规划算法&#xff08;Dynamic Programming&#xff09;超详细总结加应用案例讲解 &#xff08;2&#xff09;【路径规划】全局路径规划算法——动态规划算法&#xff08;含python实现&#xff09; &#xf…

【上交主办·EI会议】| 2024年模式分析与机器智能国际会议 (ICPAMI 2024)

会议简介 Brief Introduction 2024年模式分析与机器智能国际会议(ICPAMI 2024) 会议时间&#xff1a;2024年8月30日-9月1日 召开地点&#xff1a;中国上海 大会官网&#xff1a;www.icpami.org ICPAMI 2024将围绕“模式分析与机器智能”的最新研究领域展开&#xff0c;为研究人…

(零)OpenOFDM接收端整体思路

一旦捕获射频信号并将其下变频至基带&#xff0c;解码管道就会启动&#xff0c;包括&#xff1a; OFDM&#xff0c;多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力&#xff0c;能够支持多用户接入。 OFDM主要思想是&#xff1a;将信…

Finding the Majority Element寻找主元素

Problem Is there the majority element in sequence A [1.. n]? If so, please find it out. An integer a in A is called the majority if it appears more than [n/2] times in A.寻找元素出现次数大于n/2 Algorithm 1 —— The brute-force method 遍历序列中的每个元…

物联网数据驾驶舱

在信息化时代&#xff0c;数据已经成为驱动企业发展的核心动力。特别是在物联网领域&#xff0c;海量数据的实时采集、分析和监控&#xff0c;对于企业的运营决策和业务优化具有至关重要的作用。HiWoo Cloud作为领先的物联网云平台&#xff0c;其数据监控功能以“物联网数据驾驶…

Docker常见指令

1.docker search mysql &#xff1a;从docker镜像仓库搜索和mysql有关的镜像 docker search mysql 2.docker pull mysql &#xff1a;从docker仓库拉取mysql镜像 docker pull mysql 3.docker run mysql &#xff1a;启动mysql镜像 docker run mysql 4.docker ps &#xff…

工业母机5G智能制造工厂数字孪生可视化平台,推进行业数字化转型

随着科技的不断进步和工业的快速发展&#xff0c;数字化转型已成为工业领域的重要趋势。工业母机作为制造业的核心设备&#xff0c;其智能化、自动化水平的提升对于整个工业的发展具有重要意义。5G技术的广泛应用&#xff0c;为智能制造工厂提供了更为可靠、高速的网络连接&…

OSError: We couldn‘t connect to ‘https://huggingface.co‘ to load this file

想折腾bert的同学&#xff0c;应该也遇到这个问题。 一、报错信息分析 完整报错信息&#xff1a;OSError: We couldnt connect to https://huggingface.co to load this file, couldnt find it in the cached files and it looks like google/mt5-small is not the path to a…