Python爬虫入门课: 如何实现数据抓取 <文字 图片 音频 视频 文档..>

news2025/1/12 20:58:16

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

环境使用:

  • Python 3.10 解释器

  • Pycharm 编辑器

模块使用:

  • requests

  • re

  • csv

  • pandas

爬虫实现第一步:

一. 抓包分析

  • 找到对应数据链接地址

  • 套用代码:

    1. 修改链接

    2. 请求方式 (大部分get)

    3. 请求头模拟伪装 (复制)

    4. 根据响应返回的数据, 选择对应数据获取方式

      • 文字: 评论 / 弹幕 / 小说内容 / 房源数据 / 电商平台数据

        保存: txt 表格文件中 (csv / Excel)

二. 代码实现步骤

  1. 发送请求

  2. 获取数据

  3. 解析数据

  4. 保存数据

代码

# 导入数据请求模块
import requests
# 导入正则表达式模块
import re
# 导入csv模块
import csv
# 导入pandas
import pandas as pd

“”“保存csv”“”

csv_file = open('data.csv', mode='a', encoding='utf-8', newline='')
csv_writer  = csv.DictWriter(csv_file, fieldnames=['链接', '书名'])
csv_writer.writeheader()

“”“保存Excel”“”

content_list = [] # 创建空列表

“”“爬虫代码模板”“”

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 请求网址 <可修改>
url = 'https://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1'
# 模拟浏览器 <可修改> 只加ua得不到数据,考虑加其他的内容 cookie
headers = {
    # 'Cookie':'cookie2=1cc1a1d71b55c70f06a967cf6928e38f; t=bd212cd7985fc01620072c32d0c75e63; _tb_token_=f3b1be8e3571e; _m_h5_tk=4864b7435c237379bd0672766256fd82_1700664128902; _m_h5_tk_enc=6d437a80c2f37003b6a959efefe1ee65; cna=UuLkHVk6/GoCAa8N4mgNBHoR; xlly_s=1; _samesite_flag_=true; sgcookie=E100yzzme9pkL0eYBuODsheO6oym4V1a7ylpVuQTOkCGO76sQKdX2qtiPLXKp0Sb8zjJ%2FqStCUkOK1MfrNdepq45tpO3eeak6QWmpUJCskUPy9g%3D; unb=2253332812; uc3=vt3=F8dD3CN7RI1WgzeB9LA%3D&nk2=EFHQgqY%2FYVpGAB3A&lg2=VFC%2FuZ9ayeYq2g%3D%3D&id2=UUpkuyL4JX%2FEYg%3D%3D; csg=6c1f510f; lgc=songlin12355; cancelledSubSites=empty; cookie17=UUpkuyL4JX%2FEYg%3D%3D; dnk=songlin12355; skt=8ae0cfff23ab7492; existShop=MTcwMDY1NjIzMw%3D%3D; uc4=nk4=0%40EohdjXbja%2BcD2pXliwckLCTyc578V0Q%3D&id4=0%40U2guM2WFlHhG0KgHRZNn6toWs%2BQA; tracknick=songlin12355; _cc_=U%2BGCWk%2F7og%3D%3D; _l_g_=Ug%3D%3D; sg=526; _nk_=songlin12355; cookie1=WvZkvpyfdEVhZc7D4YCP4CnB%2BS2ARzymB83V5PHKTvs%3D; isg=BIeH6YlcrkNR5irPvfaakVLtFjtRjFtuCLgwzFl0cZYfyKaKYFniv_nJaoiWIDPm; tfstk=dKODvFa23KWf10jDdmCjgygLZ-DRco11xhFOX1IZUgS7H1HXWNvkRhjx5x1vEGxyqiPxlEKl7hY6Hq6tcP4XZHVTMmMX75fO_DnK9XLbh11tvsAHExgFsrHF4dGplE1_olupUXFMwyTdjYy05QzHMqflxPwY6dvET0sHugVHPQ74GMcC455eaZWD_K6wE8yFOiN1zVdzCR6VPajd_-PZs; l=fBIlxQSlPuu7D7pTBO5CPurza779UIRb8sPzaNbMiIEGa1yPTd8piNCTdGTM7dtjgT50keKyMAhYGdUyrRz38AkDBeYIpIqLALv68eM3N7AN.; mt=ci=68_1; uc1=cookie16=UIHiLt3xCS3yM2h4eKHS9lpEOw%3D%3D&cookie21=V32FPkk%2FgPzW&existShop=false&cookie15=VFC%2FuZ9ayeYq2g%3D%3D&cookie14=UoYelQxCxISYZA%3D%3D&pas=0; thw=cn',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
# 发送请求 <请求方式可修改>
response = requests.get(url=url, headers=headers)
"""获取响应数据
    - response.text 获取响应文本数据 (字符串)
        获取html网页数据
    - response.json() 获取响应json数据 (json字典)
        {} 花括号包裹起来数据 <必须是完整json数据格式>
    - response.content 获取响应二进制数据 (保存图片/视频/音频/特定格式文件...)
"""
html = response.text
"""解析数据
    - 数据源: 字符串数据
    - 数据: 需要的数据直接复制粘贴 需要提取内容(.*?)
    re.findall('数据', '数据源')
        比如: info = re.findall('"creativeTitle":"(.*?)","hotSale"', html)

为了防止被封IP 换IP代理 换账号 设置延时
"""
info = re.findall('<div class="name"><a href="(.*?)" target="_blank" title="(.*?)">', html)
"""保存数据
1. txt: 保存字符串数据
    # file 可以修改 <文件路径 / 文件名 / 格式> mode='a' 追加保存 w 写入数据(会覆盖)
    with open(file='demo.txt', mode='a', encoding='utf-8') as f:
        # 写入内容
        f.write(link) # 写入链接
        f.write(title) # 写入标题
        f.write('\n') # 写一个换行符
2. 表格: csv / excel
"""
# for循环遍历
for link, title in info:
    # 创建字典
    dit = {
        '链接': link,
        '书名': title
    }
    # 写入csv
    csv_writer.writerow(dit)
    # 写入Excel 把字典添加到列表中
    content_list.append(dit)
    print(link, title)

# 传入列表
df = pd.DataFrame(content_list)
# 保存Excel
df.to_excel('data.xlsx', index=False)

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

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

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

相关文章

创建JDK8版本的SpringBoot项目的方法

截止到2023.11.24&#xff0c;SpringBoot不再支持3.0X之前的版本&#xff0c;3.0X之后的版本所对应的JDK版本为JDK17&#xff0c;下面介绍如何在idea上继续使用JDK8的版本。 一.通过阿里云下载 https://start.aliyun.com/https://start.aliyun.com/ 点击高级选项进行详细设置…

centos 显卡驱动安装(chatglm2大模型安装步骤一)

1.服务器配置 服务器系统:Centos7.9 x64 显卡:RTX3090 (24G) 2.安装环境 2.1 检查显卡驱动是否安装 输入命令:nvidia-smi(显示显卡信息) 如果有以下显示说明,已经有显卡驱动。否则需要重装。 2.2 下载显卡驱动 第一步:浏览器输入https://www.nvidia.cn/Downloa…

20231127让RK3399的挖掘机开发板在Andorid12系统下休眠唤醒之后禁止锁屏

20231127让RK3399的挖掘机开发板在Andorid12系统下休眠唤醒之后禁止锁屏 2023/11/27 20:55 适用于SOC以及系统版本&#xff1a; RK3399&#xff1a;Android10/11/12 RK3568&#xff1a;Android11/12 RK3588&#xff1a;Android12 当RK3399平台的Android12系统在休眠之后&#x…

SpringBoot定时任务报错Unexpected error occurred in scheduled task原因及其解决方法(亲测有效)

问题 spring boot项目在线上一直正常运行没有错误&#xff0c;然后今天发生了报错&#xff0c;如图 这是一个定时器错误&#xff0c;发生这个报错 主要有两个原因 定时器编写的有错误Scheduled注解方式级别高于资源注入级别&#xff0c;导致了资源注入失败 以下是我的代码 …

企业如何保障跨境金融业务中的数据安全传输?

随着全球化的不断深入&#xff0c;跨境金融业务日益频繁&#xff0c;然而在这些业务中&#xff0c;数据的安全传输一直是企业面临的重大挑战。跨境业务数据传输可能会遇到多种困难&#xff0c;如网络攻击、数据泄露、通信故障等。因此&#xff0c;企业需要采取有效的措施来确保…

centos7 keepalived 探测哪个是当前节点

前提 nginx 默认页面内容中需要加上各节点的ip nginx web页面修改 nginx配置文件路径&#xff1a;/etc/nginx/nginx.conf&#xff0c;该配置文件引用了/etc/nginx/conf.d/default.conf 打开/etc/nginx/conf.d/default.conf配置文件可以看到html页面的路径 /usr/share/nginx…

判断二进制最低位数字

在二进制表示中&#xff0c;偶数的最低位&#xff08;最右边一位&#xff09;始终为0&#xff0c;而奇数的最低位始终为1。 当一个数与1进行按位与运算时&#xff0c;实际上是在检查该数的最低位是0还是1。 如果结果为0&#xff0c;则说明这个数是偶数&#xff0c;因为偶数的…

中文编程开发工具高级版全部构件工具箱列表,中文编程自由版下载

中文编程开发工具高级版全部构件工具箱列表&#xff0c;中文编程自由版下载 附&#xff1a;中文编程工具构件工具箱总共22组305个构件&#xff0c;构件明细如下&#xff1a;文本件16个&#xff1a; &#xff08;普通标签&#xff0c;连接标签&#xff0c;闪动标签&#xff0c;立…

nodejs+vue+elementui网上家电家用电器数码商城购物网站 多商家

基于vue.js的恒捷网上家电商城系统根据实际情况分为前后台两部分&#xff0c;前台部分主要是让用户购物使用的&#xff0c;包括用户的注册登录&#xff0c;查看公告&#xff0c;查看和搜索商品信息&#xff0c;根据分类定位不同类型的商品&#xff0c;将喜欢的商品加入购物车&a…

搭建Appium工具环境

1、安装Java Development Kit&#xff08;JDK&#xff09; 前往Oracle官网下载JDK。 在https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 找到最新版本的JDK。根据操作系统选择适合的版本&#xff0c;并根据指示下载安装程序。 安装JDK。运行下载的安…

Django整合回顾

web应用 什么是web&#xff1a;通过web访问web应用程序&#xff0c;很方便&#xff0c;用户只需要一个浏览器即可。是典型的浏览器/服务器端架构的产物 cs架构与bs架构 应用程序有C/S B/S两种模式&#xff1a;b/s 本质上还是c/s mysql属于c/s架构&#xff0c;只是我们的服务…

《金融科技行业2023年专利分析白皮书》发布——科技变革金融,专利助力行业发展

金融是国民经济的血脉&#xff0c;是国家核心竞争力的重要组成部分&#xff0c;金融高质量发展成为2023年中央金融工作的重要议题。《中国金融科技调查报告》中指出&#xff0c;我国金融服务业在科技的助力下&#xff0c;从1.0时代的“信息科技金融”、2.0时代的“互联网金融”…

【电路笔记】-电阻器颜色代码与阻值计算

电阻器颜色代码与阻值计算 文章目录 电阻器颜色代码与阻值计算1、概述2、计算电阻器颜色代码值3、贴片电阻器 电阻器颜色编码使用色带轻松识别电阻器的电阻值及其百分比容差。 1、概述 由于有许多不同类型的电阻器可用&#xff0c;我们需要形成电阻器颜色代码系统以便能够识别…

常见面试题-Netty中ByteBuf类

了解 Netty 中的 ByteBuf 类吗&#xff1f; 答&#xff1a; 在 Java NIO 编程中&#xff0c;Java 提供了 ByteBuffer 作为字节缓冲区类型&#xff08;缓冲区可以理解为一段内存区域&#xff09;&#xff0c;来表示一个连续的字节序列。 Netty 中并没有使用 Java 的 ByteBuff…

计算机毕业设计|基于SpringBoot+MyBatis框架的仿天猫商城购物系统设计与实现

计算机毕业设计|基于SpringBootMyBatis框架的仿天猫商城购物系统设计与实现 迷你仿天猫商城是一个基于SSM框架的综合性B2C电商平台&#xff0c;需求设计主要参考天猫商城的购物流程&#xff1a;用户从注册开始&#xff0c;到完成登录&#xff0c;浏览商品&#xff0c;加入购物…

操作系统的中断与异常(408常考点)

为了进行核心态和用户态两种状态的切换&#xff0c;引入了中断机制。 中断是计算机系统中的一种事件&#xff0c;它会打断CPU当前正在执行的程序&#xff0c;转而执行另一个程序或者执行特定的处理程序。中断可以来自外部设备&#xff08;如键盘、鼠标、网络等&#xff09;、软…

微信小程序体验版提交审核,提示接口未配置在app.json文件且无权限

在火狐浏览器 打开微信公众平台 发布小程序 弹窗一闪而过 是因为 放开这里就可以了

西南科技大学电路分析基础实验A1(元件伏安特性测试 )

目录 一、实验目的 二、实验设备 三、预习内容(如:基本原理、电路图、计算值等) 1、测定线性电阻的伏安特性 2、二极管伏安特性测试 3、测定实际电压源的伏安特性 四、实验数据及结果分析(预习写必要实验步骤和表格) 1、测定线性电阻的伏安特性 2、二极管伏安特性测…

diffusion model (九) EmuEdit技术小结

文章目录 背景1 核心思想2 方法2.1 方法建模2.2 数据工程2.2.1 image-edit任务类别定义2.2.2 指令集生成2.2.3 图片对的生成 3 结果 Paper: https://emu-edit.metademolab.com/assets/emu_edit.pdf Project web: https://emu-edit.metademolab.com/ Code: have not opensourc…

qInstallMessageHandler的学习

背景&#xff1a;需要做一个日志系统。 把信息重定向到txt文件中。 参考&#xff1a; QT 调试信息如何输出到文件&#xff08;qDebug/qWarning/qCritical/qFatal&#xff09;-CSDN博客 Qt 之 qInstallMessageHandler&#xff08;重定向至文件&#xff09;-CSDN博客 demo…