欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 爬虫学习实战

爬虫学习实战

2025/4/19 17:31:34 来源:https://blog.csdn.net/2301_77869606/article/details/142794906  浏览:    关键词:爬虫学习实战

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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词