蜜桔财经

  • 首页
  • 金融理财
  • 财经知识
  • 理财课堂
  • 新闻热点
  • 常见问题
  1. 首页
  2. 理财课堂
  3. 正文

「爬虫四步走」手把手教你使用Python抓取并存储网页数据-用python爬取股票资讯

作者:John 发布时间:2025-11-28 栏目: 理财课堂 0浏览

爬虫是Python的一个重要的应用,使用Python爬虫我们可以轻松的从互联网中抓取我们想要的数据,

本文将基于爬取B站视频热搜榜单数据并存储为例,详细介绍Python爬虫的基本流程。

如果你还在入门爬虫阶段或者不清楚爬虫的具体工作流程,那么应该仔细阅读本文!

第一步:尝试请求

首先进入b站首页,点击排行榜并复制链接

https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3

现在启动

Jupyter notebook

,并运行以下代码

import requests

url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3'

res = requests.get('url')

print(res.status_code)

#200

在上面的代码中,我们完成了下面三件事

导入

requests

使用

get

方法构造请求

使用

status_code

获取网页状态码

可以看到返回值是

200

,表示服务器

正常响应

,这意味着我们可以继续进行。

第二步:解析页面

在上一步我们通过requests向网站请求数据后,成功得到一个包含服务器资源的Response对象,现在我们可以使用

.text

来查看其内容

可以看到返回一个字符串,里面有我们需要的热榜视频数据,

但是直接从字符串中提取内容是比较复杂且低效的

,因此我们需要对其进行

解析

,将字符串转换为网页

结构化数据

,这样可以很方便地查找HTML标签以及其中的属性和内容。

在Python中解析网页的方法有很多,可以使用

正则表达式

,也可以使用

BeautifulSoup

、

pyquery

或

lxml

,本文将基于

BeautifulSoup

进行讲解.

Beautiful Soup

是一个可以从HTML或XML文件中提取数据的第三方库.安装也很简单,使用

pip install bs4

安装即可,下面让我们用一个简单的例子说明它是怎样工作的

from bs4 import BeautifulSoup

page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')

title = soup.title.text

print(title)

# 热门视频排行榜 - 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

在上面的代码中,我们通过bs4中的BeautifulSoup类

将上一步得到的html格式字符串转换为一个BeautifulSoup对象

,注意在使用时需要制定一个解析器,这里使用的是

html.parser

。

接着就可以获取其中的某个结构化元素及其属性,比如使用

soup.title.text

获取页面标题,同样可以使用

soup.body

、

soup.p

等获取任意需要的元素。

第三步:提取内容

在上面两步中,我们分别使用requests向网页请求数据并使用bs4解析页面,现在来到最关键的步骤:

如何从解析完的页面中提取需要的内容

。

在

Beautiful Soup

中,我们可以使用

find/find_all

来定位元素,但我更习惯使用CSS选择器

.select

,因为可以像使用CSS选择元素一样向下访问DOM树。

现在我们用代码讲解如何从解析完的页面中提取B站热榜的数据,首先我们需要找到存储数据的标签,在榜单页面按下F12并按照下图指示找到

可以看到每一个视频信息都被包在

class="rank-item"

的

li标签

下,那么代码就可以这样写👇

all_products =

products = soup.select('li.rank-item')

for product in products:

rank = product.select('div.num')[0].text

name = product.select('div.info > a')[0].text.strip

play = product.select('span.data-box')[0].text

comment = product.select('span.data-box')[1].text

up = product.select('span.data-box')[2].text

url = product.select('div.info > a')[0].attrs['href']

all_products.append({

"视频排名":rank,

"视频名": name,

"播放量": play,

"弹幕量": comment,

"up主": up,

"视频链接": url

})

在上面的代码中,我们先使用

soup.select('li.rank-item')

,此时

返回一个list

包含每一个视频信息,接着遍历每一个视频信息,依旧使用CSS选择器来提取我们要的字段信息,并以字典的形式存储在开头定义好的空列表中。

可以注意到我用了多种选择方法提取去元素,

这也是select方法的灵活之处

,感兴趣的读者可以进一步自行研究。

第四步:存储数据

通过前面三步,我们成功的使用requests+bs4从网站中提取出需要的数据,最后只需要将数据写入Excel中保存即可。

如果你对pandas不熟悉的话,可以使用

csv

模块写入,需要注意的是设置好编码

encoding='utf-8-sig'

,否则会出现中文乱码的问题

import csv

keys = all_products[0].keys

with open('B站视频热榜TOP100.csv', 'w', newline='', encoding='utf-8-sig') as output_file:

dict_writer = csv.DictWriter(output_file, keys)

dict_writer.writeheader

dict_writer.writerows(all_products)

如果你熟悉pandas的话,更是可以轻松将字典转换为DataFrame,一行代码即可完成

import pandas as pd

keys = all_products[0].keys

pd.DataFrame(all_products,columns=keys).to_csv('B站视频热榜TOP100.csv', encoding='utf-8-sig')

小结

至此我们就成功使用Python将b站热门视频榜单数据存储至本地,大多数基于requests的爬虫基本都按照上面四步进行。

不过虽然看上去简单,但是在真实场景中每一步都没有那么轻松,

从请求数据开始目标网站就有多种形式的反爬、加密,到后面解析、提取甚至存储数据都有很多需要进一步探索、学习。

本文选择B站视频热榜也正是因为它足够简单,希望通过这个案例让大家明白爬虫的基本流程,最后附上完整代码

import requests

from bs4 import BeautifulSoup

import csv

import pandas as pd

url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3'

page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')

all_products =

products = soup.select('li.rank-item')

for product in products:

rank = product.select('div.num')[0].text

name = product.select('div.info > a')[0].text.strip

play = product.select('span.data-box')[0].text

comment = product.select('span.data-box')[1].text

up = product.select('span.data-box')[2].text

url = product.select('div.info > a')[0].attrs['href']

all_products.append({

"视频排名":rank,

"视频名": name,

"播放量": play,

"弹幕量": comment,

"up主": up,

"视频链接": url

})

keys = all_products[0].keys

with open('B站视频热榜TOP100.csv', 'w', newline='', encoding='utf-8-sig') as output_file:

dict_writer = csv.DictWriter(output_file, keys)

dict_writer.writeheader

dict_writer.writerows(all_products)

### 使用pandas写入数据

pd.DataFrame(all_products,columns=keys).to_csv('B站视频热榜TOP100.csv', encoding='utf-8-sig')

end

这么长你都读完了,你真是个爱学习的好孩子!为了奖励你,我决定把Python书以最便宜的价格卖给你!比京东淘宝都便宜,而且还能累加使用优惠券!尽量不让经济问题,耽误你的学习。来,领券学习吧,少年!

光学测量仪器

ogp影像仪怎么样

三次元影像仪公司

ogp三次元影像仪

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。

版权所属:蜜桔财经

文章作者:John

本文地址:http://caijing.cj8836.cn/97556.html

分享本文
上一篇
「爆料」区块链行业传销币、空气币名单-博爱联盟慈善基金
下一篇
「爱卫曝光台」县城农贸市场脏乱差反弹堪忧-银江分公司乱像
猜你喜欢
国新能源股票为啥长期不涨国新能源股票为啥长期不涨停.
国新能源股票为啥长期不涨国新能源股票为啥长期不涨停.
农业银行过年存款送东西吗农业银行存款有礼品送吗
农业银行过年存款送东西吗农业银行存款有礼品送吗
投资建设寺庙投资建设寺庙要多少钱
投资建设寺庙投资建设寺庙要多少钱
换u虚拟货币 兑换u什么意思
换u虚拟货币 兑换u什么意思
异地农业银行卡取10000异地农业银行卡取10000可以吗
异地农业银行卡取10000异地农业银行卡取10000可以吗
挖财是什么公司,挖财宝合法吗
挖财是什么公司,挖财宝合法吗
台湾外资银行台湾外资银行排名
台湾外资银行台湾外资银行排名
国家控股银行国家控股银行排名.
国家控股银行国家控股银行排名.
热门文章
  • 全域智慧 引领未来!瑞驰汽车携多款全域智慧新品亮相2025世界智博会

    全域智慧 引领未来!瑞驰汽车携多款全域智慧新品亮相2025世界智博会

    2025-09-05 2560
  • 四十亿越南盾是多少人民币四十亿越南盾等于多少人民币

    四十亿越南盾是多少人民币四十亿越南盾等于多少人民币

    2024-04-08 1016
  • 国庆自驾开啥车?蓝电E5对比哈弗大狗,谁是最强郊游神车 !

    国庆自驾开啥车?蓝电E5对比哈弗大狗,谁是最强郊游神车 !

    2023-09-27 705
  • 10来万预算买电混SUV,蓝电E5和启辰大V DD-i怎么选呢?

    10来万预算买电混SUV,蓝电E5和启辰大V DD-i怎么选呢?

    2023-09-27 703
  • 至高优惠8千:不到5万买风光380,2-8座随意选,质保7年20万公里!

    至高优惠8千:不到5万买风光380,2-8座随意选,质保7年20万公里!

    2023-10-13 700
  • 大7座新能源SUV,蓝电E5综合优惠至高3万5,启辰大V DD-i怎么比

    大7座新能源SUV,蓝电E5综合优惠至高3万5,启辰大V DD-i怎么比

    2023-10-01 700
  • 价格不贵还好用:蓝电E5比欧尚Z12 IDD更实在

    价格不贵还好用:蓝电E5比欧尚Z12 IDD更实在

    2023-09-30 700
  • 老百姓的致富车,风光380现金直补3000元,载人拉货样样都行!

    老百姓的致富车,风光380现金直补3000元,载人拉货样样都行!

    2023-10-18 699
网站分类
  • 金融理财
  • 财经知识
  • 理财课堂
  • 新闻热点
  • 常见问题
云标签
  • 关于我们
  • 联系我们
  • 广告合作
Copyright © 蜜桔财经 Design by 蜜桔财经
备案号 版权归蜜桔财经所有