Python爬虫使用实例_1

news2024/12/26 12:20:21

Python爬虫使用实例


—— 续
IDE: Pycharm or Jupyter Notebook

6. 网易云歌榜

🥝 获取地址

在这里插入图片描述记得把#/去掉就好,一定要记得,否则没用。

热歌榜的url是 https://music.163.com/discover/toplist?id=3778678 ,同理可得其他榜的url

在这里插入图片描述
比如:

在这里插入图片描述飙升榜:https://music.163.com/discover/toplist?id=19723756
改下id即可

关于headers
在这里插入图片描述

🥝 实现代码

import requests
import re # 正则表达式模块
import os # 文件操作模块
filename='music\\'
if not os.path.exists(filename):
    os.mkdir(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/80.0.3987.163 Safari/537.36'
}
response=requests.get(url=url,headers=headers)
html_data=re.findall('<li><a href="/song\?id=(\d+)">(.*?)</a>',response.text)
# print(html_data)
for num_id,title in html_data:
    # https://music.163.com/song/media/outer/url?id=1859245776.mp3
    music_url=f'https://music.163.com/song/media/outer/url?id={num_id}.mp3'
    music_content=requests.get(url=music_url,headers=headers).content
    with open('music\\'+title+'.mp3',mode='wb') as f:
        f.write(music_content)
    print(num_id,title)

🥝 运行效果

网易云热歌榜共200首歌,不用几分钟就下好了。
在这里插入图片描述有些歌是重复的

在这里插入图片描述


在这里插入图片描述
进行了覆盖,所以文件夹📂中≤200

7. 大学排名

在这里插入图片描述

import re
with open('rank.csv',encoding='utf-8',newline='',mode='a') as f:
              csv_writer=csv.writer(f)
              csv.writer.writerow(['country','rank','region','score1','score2','score3','score4','score5','score6','stars','total_score','university','year'])
# 替换不需要的字符
def replace(str_):
    str_=re.findall('<div class="td-wrap"><div class="td-wrap-in">(.*?)</div>',str_)[0]
    return str_
#1.发送请求
url="https://www.qschina.cn/sites/default/files/qs-rankings-data/cn/2057712_indicators.txt"
response=requests.get(url) # requests method:get
#print(response)# <Response [200]>
#2.获取数据
json_data=response.json()
#print(json_data)
#3.解析数据
for data in json_data['data']:
    country=data['location']
    rank=data['overall_rank']
    region=data['region']
    score1=replace(data['ind_76'])
    score2=replace(data['ind_77'])
    score3=replace(data['ind_36'])
    score4=replace(data['ind_73'])
    score5=replace(data['ind_18'])
    score6=replace(data['ind_14'])
    stars=data['stars']
    total_score=replace(data['overall'])
    university=data['uni']
    university=re.findall('<div class="td-wrap"><div class="td-wrap-in"><a href=".*?" class="uni-link">(.*?)</a></div></div>',university)
    year="2021"
    print(country,rank,region,score1,score2,score3,score4,score5,score6,stars,total_score,university,year)

8. 微博评论

🥝 获取地址

在这里插入图片描述

🥝 实现代码

‌‌正则表达式中匹配中文的常用表达式是[\u4e00-\u9fa5]+[\u4e00-\u9fa5]表示一个字符集,其中\u4e00\u9fa5分别是Unicode中文字符的起始和结束编码范围, +表示前面的字符集可以出现一次或多次,即匹配一个或多个中文字符。

import requests
import pandas as pd
import re
# import pprint

# https://m.weibo.cn/
url="https://m.weibo.cn/comments/hotflow?id=5071592833155928&mid=5071592833155928&max_id_type=0"

header={'cookie':"SINAGLOBAL=7254774839451.836.1628626364688; SUB=_2AkMWR_ROf8NxqwJRmf8cymjraIt-ygDEieKgGwWVJRMxHRl-yT9jqmUgtRB6PcfaoQpx1lJ1uirGAtLgm7UgNIYfEEnw; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WWEs5v92H1qMCCxQX.d-5iG; UOR=,,www.baidu.com; _s_tentry=-; Apache=1090953026415.7019.1632559647541; ULV=1632559647546:8:4:2:1090953026415.7019.1632559647541:1632110419050; WBtopGlobal_register_version=2021092517; WBStorage=6ff1c79b|undefined",
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}

# 发起请求并获取数据
response = requests.get(url=url, headers=header)
response.encoding = 'utf-8'  # 确保响应内容的编码

# 创建一个空的数据框
df = pd.DataFrame(columns=[
    '用户',
    '地区',
    '评论',
    '日期',
])

# 遍历响应数据
for index in response.json()['data']['data']:
    # pprint.pprint(index)

    content = ''.join(re.findall('[\u4e00-\u9fa5]+', index['text'])) 

    # 创建一个字典并添加到数据框中
    dict_entry = {
        '用户': index['user']['screen_name'],
        '地区': index['source'].replace('来自', ''),
        '评论': content,
        '日期': index['created_at'],
    }

    # 将字典添加到数据框
    df = df.append(dict_entry, ignore_index=True)
    print(dict_entry)

    # 可以根据需要删除这行以获取所有评论
    # break

# 写入CSV文件
df.to_csv('weibo评论1.csv', encoding='utf-8-sig', index=False)

🥝 运行效果

在这里插入图片描述
在这里插入图片描述正则表达式模块re及其应用

9. 天气数据

# pip install pandas
# pip install lxml
import pandas as pd
import lxml
url='http://www.weather.com.cn/textFC/hb.shtml'
pd.read_html(url,header=1,index_col=[0,1])[1]

在这里插入图片描述

10. 基金数据

# pip install html5lib
import pandas as pd
import lxml
import html5lib
import ssl
#ssl._create_default_https_context = ssl._create_unverified_context
url='https://fund.eastmoney.com/fund.html#os_0;isall_0;ft_;pt_1'
pd.read_html(url)[2]

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>

原因:Python 升级到 2.7.9 之后引入了一个新特性,当使用urllib.urlopen打开一个 https 链接时,会验证一次 SSL 证书。

解决方法:

import ssl
# ssl._create_default_https_context = ssl._create_unverified_context

效果部分截图,比较长没接完,大概就是这样子的:

在这里插入图片描述

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

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

相关文章

Java设计模式之单例模式详细讲解和案例示范

单例模式&#xff08;Singleton Pattern&#xff09;是Java设计模式中最简单但却非常实用的一种。它确保一个类只有一个实例&#xff0c;并提供一个全局的访问点。本文将通过电商交易系统为例&#xff0c;详细探讨单例模式的使用场景、常见问题及解决方案。 1. 单例模式简介 …

【LeetCode Cookbook(C++ 描述)】平衡二叉树

目录 平衡二叉树基础不同插入节点方式的不同旋转LL 型失衡RR 型失衡LR 型失衡RL 型失衡 删除操作删除节点为二叉树的叶子节点删除的节点只有左子树或者右子树删除的节点既有左子树又有右子树 LeetCode #110&#xff1a;Balanced Binary Tree 平衡二叉树递归法&#xff08;自底向…

[C++番外] 抛异常

一、C语言的时候我们怎么判断错误的呢&#xff1f; C语言的错误处理机制&#xff1a; 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除0错误时就会终止程序。返回错误码&#xff0c;缺陷&#xff1a;需要程序员自己去查…

字典序排数

题目链接 字典序排数 题目描述 注意点 1 < n < 5 * 10^4 解答思路 参照题解使用dfs完成本题&#xff0c;需要注意的是结果不包含0&#xff0c;所以先遍历第一层&#xff08;1~9&#xff09;&#xff0c;再根据每个节点继续深搜&#xff0c;将访问到的节点按顺序添加…

测试开发面试题目汇总

之前因为面临换工作&#xff0c;所以通过一些渠道汇总了一些面试题目&#xff0c;然后加入了部分自己面试过程中遇到的问题&#xff0c;因此记录下来。文末有惊喜。 1. 项目经验 2. 测试的过程 3. 京东登录页面怎么测&#xff1f; 4. 如果一个普通用户&#xff0c;他的百度首…

EasyExcel动态映射Excel数据到任意实体类教程

在使用EasyExcel进行Excel导入时&#xff0c;我们经常需要将Excel中的数据映射到Java实体类中。如果Excel的列名是固定的&#xff0c;我们可以通过ExcelProperty("列名")注解直接在实体类中指定列名。但如果Excel的列名不固定&#xff0c;或者我们希望根据Excel的第一…

NS2582 同步升压双节锂电池充电管理 IC

1 特性  最大 2A 输出同步开关型升压充电器  升压效率可高达 90% 以上  内置电池短路 / 涓流 / 恒流 / 恒压模式  0.5% 电池恒压模式电压精度  支持 LED 充电状态指示  支持充电电流外部可调  支持输入适配器 DPM 功能  外置 EN 使能…

SQL语法:create、insert、update、

1.create创建表 创建表时&#xff0c;通常会有如下设置&#xff1a;主键、非空、取值唯一、使用自动增长等。 根据如图创建表名为userinfo的数据表&#xff1a; create table userinfo(id int not null primary key auto_increment,username varchar(50) not null unique,cre…

java框架第二课(Reflection反射机制)

一.关于反射 (1)使用场景介绍 平常我们写代码时&#xff0c;都是已知类名&#xff0c;类的属性&#xff0c;构造方法&#xff0c;其他方法等信息&#xff0c;然后根据类名new对象&#xff0c;这个过程称为正向操作(例如&#xff1a;有一个管理员类&#xff0c;有账号和密码属…

WEB渗透Win提权篇-BypassUAC

提权工具合集包&#xff08;免费分享&#xff09;&#xff1a; 夸克网盘分享 往期文章 WEB渗透Win提权篇-提权工具合集-CSDN博客 WEB渗透Win提权篇-RDP&Firewall-CSDN博客 WEB渗透Win提权篇-MSSQL-CSDN博客 WEB渗透Win提权篇-MYSQL-udf-CSDN博客 WEB渗透Win提权篇-Acc…

大模型基础环境部署之一:安装 Nvidia 的驱动(详细实操版)

一、系统准备前置条件 1、更新软件包列表 sudo apt-get update2、安装编译工具和依赖项 sudo apt-get install gcc sudo apt-get install make sudo apt-get install g注&#xff1a;如果在安装 g 时遇到错误消息&#xff1a;“***you do not appear to have libc header fi…

【C++ Primer Plus习题】6.2

问题: 解答: #include <iostream> #include <array> using namespace std;#define MAX 10int main() {array<float, MAX> arr;float sum0;float average0;int i 0;int count0;int bigger 0;for (i 0; i < MAX; i){cout << "请输入donation…

大数据技术之Flume 企业开发案例——聚合(7)

目录 聚合 1&#xff09;案例需求&#xff1a; 2&#xff09;需求分析 3&#xff09;实现步骤&#xff1a; 准备工作 创建 flume1-logger-flume.conf 创建 flume2-netcat-flume.conf 创建 flume3-flume-logger.conf 执行配置文件 聚合 1&#xff09;案例需求&#x…

华为eNSP:路由器子接口配置

一、拓扑图 二、 路由器配置 [R1]int g0/0/0.1#进入子接口 [R1-GigabitEthernet0/0/0.1]ip add 192.168.1.254 24#配置子接口地址 [R1-GigabitEthernet0/0/0.1]dot1q termination vid 10#标记终止的vid编号 [R1-GigabitEthernet0/0/0.1]arp broadcast enable #开启子接口的arp…

Keilv5 逻辑分析仪的使用

声明&#xff1a;基于视频【事件驱动型编程和 QP/C 框架】所做的笔记 Keilv5逻辑分析仪是Keil MDK集成开发环境&#xff08;IDE&#xff09;中的一个工具&#xff0c;用于帮助开发人员进行嵌入式系统的调试和分析。 它的作用主要有&#xff1a; 监测信号&#xff1a;Keilv5逻…

DBSCAN算法详解

1. 算法原理 DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;是一种基于密度的聚类算法&#xff0c;主要用于发现数据中的任意形状的簇&#xff0c;并能够有效地识别噪声点。它的基本思想是通过密度来定义簇&#xff0c;即在数据…

Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 ]

本文继上篇文章http://t.csdnimg.cn/mJlmW继续介绍GUI的图形界面编程&#xff08;相关视频是哔站上的应该搜这个题目就能找到&#xff09;&#xff0c;文章还是很基础的&#xff0c;目前博主处于有一点基础的状态。 文章的主要介绍了依旧非常重要的结构tinkter库、常见的三种布…

Patch-Package:一款灵活的开源依赖修复工具

一、背景 在现代软件开发中&#xff0c;开发者通常依赖大量的开源库来加快开发进程。然而&#xff0c;随着时间的推移&#xff0c;可能会遇到一些问题&#xff1a; 开源包的缺陷&#xff1a;开源库可能存在 Bug 或者与项目不兼容的问题。开发者可以自己修复这些问题&#xff0…

QML控件: 动画输入框 LineEdit PySide6

1. 前言 本代码为扫地僧-smile原创, 废话不多说, 直接看效果图由于录制的这个GIF图掉帧严重, 实际动画效果非常细腻 2.看代码 控件模块代码如下 SmileLineEdit.qml import QtQuick import QtQuick.Controls/* __author__: 扫地僧-smile */Rectangle {// 属性property int …

这些年使用Delphi的成果

成果1&#xff1a; 收到了一件文化衫 成果2&#xff1a;被评为亚洲专家&#xff0c;收到了一套Delphi7 光碟找不到了。