爬虫学习实战

1.大学排名爬取(简单)

selenium实现爬取。

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
import timeurl = 'https://daxue.911cha.com/'
driver = webdriver.Chrome()
# 设置隐式等待,等待页面加载完成
driver.implicitly_wait(10)
driver.get(url)
time.sleep(5)
el_list = driver.find_elements(By.XPATH, '/html/body/div[2]/div[1]/div/div[4]/ul/li/a')
print(len(el_list))data_list = []
for el in el_list:temp = {}# 获取父元素parent_el = el.find_element(By.XPATH, '..')# 为获取父元素排名full_text = parent_el.textrank = full_text.split('、')[0]  # 提取排名部分temp['rank'] = ranktemp['title'] = el.text  # 获取链接文本temp['link'] = el.get_attribute('href')  # 获取链接地址print(temp)data_list.append(temp)driver.quit()

 requests模块实现爬取。

# -*- coding: utf-8 -*-
import requests
import time
import re# 请求的 URL 和头信息
url = 'https://daxue.911cha.com/'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36','cookie': 't=09e2b1d008500ac11b3898cd90d32e9a; r=6677; Hm_lvt_2e69b379c7dbfdda15f852ee2e7139dc=1728458230, 1728611778; Hm_lpvt_2e69b379c7dbfdda15f852ee2e7139dc=1728611778; HMACCOUNT=F89A075820B0EAF1'
}# 发起请求并等待 5 秒
response = requests.get(url, headers=headers)
time.sleep(5)# 使用正则表达式提取大学排名、名称和链接
html_data = re.findall(r'<li>(\d+)、<a href="(\./\d+\.html)" target="_blank">([^<]+)</a></li>', response.text)# 构造完整链接和输出结果
base_url = "https://daxue.911cha.com"
schools = [{'ranking': rank, 'name': name, 'link': f"{base_url}{link[1:]}"} for rank, link, name in html_data]# 打印结果
for school in schools:print(school)

2.云歌曲爬取 

 注意点:

1.只能爬取免费歌曲

2.正则表达式上一篇博客有,因为含有内部frame框架,所以xpath路径无法获取,只能选择正则表达式,或者尝试selenium实现。

3.https://music.163.com/song/media/outer/url?id=.mp3 这个是以前的某云外链地址,长期有效,现在只是还能用。

# -*- coding: utf-8 -*-
# document.charset 查看源码编码格式
import requests
import time
import re
import osfilename = 'musics\\'
# 如果没有则创建文件夹,os与操作系统实现交互功能(创建文件夹和目录)
if not os.path.exists(filename):os.makedirs(filename)url = 'https://music.163.com/discover/toplist?id=3778678'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'}response = requests.get(url, headers=headers)
time.sleep(5)
# re.findall
# 这个函数用于在字符串中查找所有与正则表达式模式匹配的部分,并返回一个包含所有匹配项的列表
# r 前缀表示这是一个原始字符串,其中的反斜杠不会被解释为转义字符
# (\d+): 捕获组,匹配一个或多个数字
# (.*?): 捕获组,非贪婪匹配任何字符(包括空字符),直到遇到 </a>
# print(response.text)
html_data = re.findall(r'<li><a href="/song\?id=(\d+)">(.*?)</a>', response.text)for num_id, title in html_data:#  f-string 直接嵌入表达式music_download = f'https://music.163.com/song/media/outer/url?id={num_id}.mp3'music_content = requests.get(music_download, headers=headers)with open('musics\\' + title + '.mp3', 'wb') as f:f.write(music_content.content)print(num_id, title)

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

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

相关文章

专题:贪心算法(已完结)

1.分发饼干 方法一&#xff1a;用最大的胃口 找到最大的饼干&#xff08;先遍历胃口&#xff09; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 主要思路 用最大的饼干找最大的胃口sort(g.begin(),g.end());so…

C语言练习

题目&#xff1a; 1.运用switch选择语句&#xff0c;编写一段C语言&#xff0c;请根据输入的数字&#xff0c;显示相应的星期日&#xff0c;如果数字所对应的星期日并不存在请显示“抱歉&#xff0c;您输入的内容并不存在。” 分析&#xff1a;1.在本题中&#xff0c;要运用到…

大厂面试真题-说一下推和拉的模式以及常见的使用

Pull&#xff08;拉&#xff09;模式和Push&#xff08;推&#xff09;模式是消息传递中的两种基本机制&#xff0c;它们在消息中间件和注册中心中的应用广泛而多样。 Pull&#xff08;拉&#xff09;模式 Pull模式是一种消息消费模式&#xff0c;其中客户端主动从服务端拉取…

C语言之扫雷小游戏(完整代码版)

说起扫雷游戏&#xff0c;这应该是很多人童年的回忆吧&#xff0c;中小学电脑课最常玩的必有扫雷游戏&#xff0c;那么大家知道它是如何开发出来的吗&#xff0c;扫雷游戏背后的原理是什么呢&#xff1f;今天就让我们一探究竟&#xff01; 扫雷游戏介绍 如下图&#xff0c;简…

【网络安全】漏洞案例:提升 Self-XSS 危害

未经许可,不得转载。 文章目录 Self-XSS-1Self-XSS-2Self-XSS-1 目标应用程序为某在线商店,在其注册页面的First Name字段中注入XSS Payload: 注册成功,但当我尝试登录我的帐户时,我得到了403 Forbidden,即无法登录我的帐户。 我很好奇为什么我无法登录我的帐户,所以我…

如何破解 AI 聊天机器人让它们吐露秘密!窥探 AI 系统指令的 10 种技巧

​ 有时&#xff0c;为了确保 AI 的安全性和透明性&#xff0c;用户需要自己动手&#xff0c;揭开系统指令的面纱。 如果人工智能现在已经成为生活中的事实&#xff0c;并影响着我们的福祉&#xff0c;人们理应知道它的运作原理。 对一些人来说&#xff0c;科幻电影中的经典…

mysql的表锁和行锁

区别&#xff1a;有索引的时候就是行锁&#xff0c;没有索引的时候就是表锁 InnoDB行锁是通过索引上的索引项来实现的&#xff0c;这一点&#xff2d;ySQL与Oracle不同&#xff0c;后者是通过在数据中对相应数据行加锁来实现的 表锁和行锁的使用场景 对于InnoDB表&#xff0…

新装ubuntu22.04必做两件事,不然可能没法用

一、换服务源 在全部里面找到软件和安装&#xff1b;打开后 在更多里面匹配一下最适合自己的软件源&#xff1b;这个过程比较漫长&#xff1b;要耐心等待 二、换软件安装中心 先执行&#xff1a; sudo apt upgrade 后执行&#xff1a; sudo apt install plasma-discover…

HBASE介绍和使用

一、HBase 简介 HBase 是一个开源的、分布式的、面向列的非关系型数据库&#xff0c;它构建在 Hadoop 文件系统&#xff08;HDFS&#xff09;之上&#xff0c;为大数据存储和处理提供了高可靠性、高可扩展性和高性能的解决方案。 二、主要特点 分布式架构 HBase 采用主从架构…

初级网络工程师之从入门到入狱(四)

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 网络工程师从入门到入狱 前言一、Wlan应用实战1.1、拓扑图详解1.2、LSW11.3、AC11.4、抓包1.5、Tunnel隧道模式解析1.6、AP、…

【AIF-C01认证】亚马逊云科技生成式 AI 认证正式上线啦

文章目录 一、AIF-C01简介二、考试概览三、考试知识点3.1 AI 和 ML 基础知识3.2 生成式人工智能基础3.3 基础模型的应用3.4 负责任 AI 准则3.5 AI 解决方案的安全性、合规性和监管 四、备考课程4.1 「备考训练营」 在线直播课4.2 「SkillBuilder」学习课程 五、常见问题六、参考…

RSA加密

import math from sympy import primerange# def are_coprime(a, b):return math.gcd(a, b) 1def find_e_and_d(fn):"""找到合适的e和d&#xff0c;使得e * d ≡ 1 (mod fn)"""for e in range(2, fn):if are_coprime(e, fn):d pow(e, -1, fn) …

Flutter技术学习

以下内容更适用于 不拘泥于教程学习&#xff0c;而是从简单项目入手的初学者。 在开始第一个项目之前&#xff0c;我们先要了解 两个概念。 Widget 和 属性 Widget 是用户界面的基本构建块&#xff0c;可以是任何 UI 元素。属性 是 widget 类中定义的变量&#xff0c;用于配…

【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024)

【IEEE独立出版 | 厦门大学主办】 第四届人工智能、机器人和通信国际会议&#xff08;ICAIRC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 2024年12月27-29日 | 中国厦门 >>往届均已成功见刊检索…

深入理解Transformer的笔记记录(精简版本)NNLM → Word2Vec

文章的整体介绍顺序为&#xff1a; NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT 自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理&#xff0c;通常需要将语言数学化&#xff0c;因为计算机机器只认数学符号…

Node.js管理工具NVM

nvm&#xff08;Node Version Manager&#xff09;是一个用于管理多个 Node.js 版本的工具。以下是 nvm 的使用方法和一些常见命令&#xff1a; 一、安装 nvm 下载 nvm&#xff1a; 地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases访问 nvm 的 GitHub 仓…

稳字诀! 洞见 强者的社交格局:从不恋战——早读(逆天打工人爬取热门微信文章解读)

都是文字 引言Python 代码第一篇 洞见 强者的社交格局&#xff1a;从不恋战第二篇 稳字诀结尾 引言 今天很奇怪 一直都挺烦造的 好像有很多事情忙 但是就是忙着找不定 不能定下心来 主要还是在股市 其他方面应该没啥 计划表还是不够给力 没办法把心在约定住 稳字诀 勤燃香,奋…

GPT和BERT

GPT和BERT都是基于Trm的应用&#xff0c;可以理解为GPT是decoder的应用&#xff0c;BERT可以说是encoder的应用 GPT 如图&#xff0c;就是GPT的原理&#xff0c;GPT是做生成式的任务的&#xff0c;没有办法进行下游任务改造&#xff0c;训练也是针对生成式的任务进行训练 BE…

​微信小程序 页面间传递数据

在小程序中&#xff0c;给页面传递参数通常有以下几种方法&#xff1a; 通过URL传递参数&#xff1a; 在小程序中&#xff0c;可以在页面的路径后面添加参数&#xff0c;然后在页面的 onLoad 函数中获取这些参数。 // 在app.json中配置页面路径 "pages": [{"pat…

Spring Boot 核心理解-profile

在 Spring Boot 中&#xff0c;application.properties 和 application.yml 是用来管理应用程序配置的主要文件。为了方便在不同的环境&#xff08;如 dev、test、prod&#xff09;下进行配置管理&#xff0c;Spring Boot 提供了 Profile 的概念&#xff0c;这使得我们可以针对…