Python实战案例:采集P站数据内容

news2024/9/25 3:26:35

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

开发环境:

  • Python 3.8 / 编译器

  • Pycharm 2021.2版本 / 编辑器

模块使用:

  • requests : 主要用来发 送 HTTP 请求 、 属于第三方模块

  • parsel : 解析html,xml内容,获取需要的数据 、属于第三方模块

  • re :python独有的匹配字符串的模块 、内置模块,无需安装

  • json :该模块就可以完成 JSON 与 Python 两种数据格式的相互转换 、内置模块,无需安装

第三方模块安装:

在cmd里面或者pycharm终端里面进行安装 pip install requests 安装。

本次目标

本次案例的思路流程:

一. 关于数据来源查询:

找不到数据来源,不知道去采集 ?

采集 P站数据内容 主要是图片壁纸

  1. 找单张图片url地址

  2. 找这个图片url地址来源

    来自于图片详情页url:

  3. 找多张图片url地址参数变化

    在图片列表页可以获取每个图片详情页url地址

二. 代码实现思路:

  1. 发送请求:

  2. 获取数据

  3. 解析数据

  4. 保存数据

代码展示:

导入模块

import requests 
import parsel
import re
import json
import pprint 
def change_title(title):
    mode = re.compile(r'[\\\/\:\*\?\"\<\>\|]')
    new_title = re.sub(mode, '_', title)
    return new_title

多页采集

for page in range(1, 11):
    print(f'======================正在爬取第{page}页数据内容======================')
    url = f'*****/hot_{page}'

发送请求

需要加上headers 请求头

请求头: 把Python代码伪装成浏览器向服务器发送请求

user-agent:浏览器的信息

    headers = {
        'user-agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
    }

模拟浏览器对服务器发送请求, 然后服务器就给我们返回一个响应数据 response

    response = requests.get(url=url, headers=headers)
    # response.text 获取网页的文本数据
    # print(response.text)

解析数据

css选择 xpath re正则表达式 bs4 parsel

首先需要把 response.text 这个网页字符串 转换成 selector 对象

    selector = parsel.selector(response.text)

css选择器 就是根据标签属性内容提取相关数据

标签里面的class类 开头用一个圆点 . 可以代替

attr() 属性选择器 选择标签里面什么属性内容 text 取标签的文本数据

getall() 取所有标签内容 返回的是一个列表

    href = selector.css('.px-img a::attr(href)').getall()
    titles = selector.css('.px-info .px-info-title::text').getall()

我要提取一个列表每一个元素 是通过遍历

zip() 一个合并函数 可以把两个列表合并到一起 返回的一个zip对象

通过遍历zip对象 给我们返回的一个元组

    zip_data = zip(href, titles)
    # print(zip_data)
    for index in zip_data:
        index_url = '****' + index[0]

        title = index[1]
        response_1 = requests.get(url=index_url, headers=headers)
        # print(index_url)
        # print(response_1.text)
        # re.findall('写匹配规则', '在哪里匹配')
        # \ 转义字符 主要把哪些特殊字符 转义成除了自己本身字符意思 不含有其他任何特殊意思
        # 正则表达式 匹配出来的内容 是列表
        html_data = re.findall('window\.__INITIAL_STATE__=(.*?)', response_1.text)
        json_data = json.loads(html_data)

json字典取值 键值对取值, 根据冒号左边的关键字 提取冒号右边的值

        img_data = json_data['tag']['worksDetailData']['coverImage']['path']
        img_url = '*****' + img_data + '?imageView2/3/q/85/interlace/1/w/2560/h/2560/format/webp'

split() 字符串分割 以 ‘.’ 分割成一个列表

        img_name = img_data.split('.')[-1]

保存数据

        # print(img_url)
        # print(title)
        # print(type(json_data))
        # break # 跳出循环 只打印一个就好了
        # response.content 获取网页二进制数据 图片/视频/音频/特殊格式的文件 这些都是需要获取二进制数据
        new_title = change_title(title)
        img_content = requests.get(url=img_url, headers=headers)
        with open('img\\' + new_title + '.' + img_name, mode='wb') as f:
            f.write(img_content)
            print(title)






尾语

大家觉得有用的话可以来个免费的点赞+收藏+关注,

防止下次我悄悄更新了好东西你却不知道 !!!

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

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

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

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

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

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

相关文章

业务高峰期,人力需求突增,灵活用工成破局关键

在上一篇文章里&#xff0c;讲到了盖雅零工平台如何帮助HR管理复杂、灵活的零工人员。 而零工平台是否好用&#xff0c;不仅要便于HR管理零工&#xff0c;更需要终端的业务管理者觉得方便、实用、操作顺畅。 由于零工主要被用来解决突增的、巅峰期的、季节性的用工需求&#…

nginx实战,nginx高可用, nginx负载配置, nginx正向,反向代理,nginx各种配置, 及其配置问题

nginx配置实战, nginx负载&#xff0c; nginx正向&#xff0c;反向代理&#xff0c;nginx路由配置 nginxnginx基础nginx 配置nginx正向代理nginx 反向代理nginx 负载nginx高可用 nginx 配置常见问题反向代理报426错误post请求变get请求nginx 配置前端代理&#xff0c; 会出现js…

自学Java靠谱吗?自学Java能找到工作吗?建议收藏反复查看!

网上是不是很多人劝你学Java不要报班&#xff0c;浪费金钱&#xff0c;自己在家学习Java就可以了。那小源问你&#xff0c;自学Java它的成功率到底有多少&#xff1f;前两天看到一位老师发的视频&#xff0c;说自学的成功率大概在5%左右&#xff0c;小源觉得这个数据还是比较客…

IO线程模型

文章目录IO线程模型一、BIO1、概念2、Demo2.1、Demo1.02.2、Demo2.02.3、小结二、NIO1、概念2、Demo2.1、Demo1.02.2、Demo2.0IO线程模型 一、BIO 1、概念 BIO 全称 Block-IO 是一种**同步且阻塞**的通信模式。是一个比较传统的通信方式&#xff0c;模式简单&#xff0c;使用…

万字长文的BI百科全解

目前来看&#xff0c;现今世界未来的发展方向基本已经确定&#xff0c;数字化的趋势已经化身为一股不可阻挡的浪潮&#xff0c;各国也都宣布了数字化、数据、数字经济、数字化转型等方面的相关发展政策法规&#xff0c;明确未来的战略方针。同时世界传统经济增长也开始乏力&…

6 计时器(一)

计时器 6.1 TIM TIM简介 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中…

2023 年 3 月 NFT 月度报告

作者&#xff1a;Danielfootprint.network 数据来源&#xff1a;NFT Monthly Report 三月份的 NFT 市场上出现了两个有趣的趋势。一方面&#xff0c;Polygon 链尽管在二月份有所突破&#xff0c;达到了 NFT 总交易量的 4.2%&#xff0c;但于三月再次跌至 1% 以下&#xff0c;…

55 openEuler搭建Mariadb数据库服务器-配置环境

文章目录 55 openEuler搭建Mariadb数据库服务器-配置环境55.1 关闭防火墙并取消开机自启动55.2 修改SELINUX为disabled55.3 创建组和用户55.4 创建数据盘55.4.1 方法一&#xff1a;在root权限下使用fdisk进行磁盘管理55.4.2 方法二&#xff1a;在root权限下使用LVM进行磁盘管理…

【C语言】基础语法1:变量和数据类型

❤️‍&#x1f525;前情提要❤️‍&#x1f525;   欢迎来到C语言基本语法教程   在本专栏结束后会将所有内容整理成思维导图&#xff08;结束换链接&#xff09;并免费提供给大家学习&#xff0c;希望大家纠错指正。本专栏将以基础出发&#xff0c;在之后的教程中将会不断…

MySQL调优笔记——慢SQL优化记录(2)

今天调优的原因是&#xff0c;有一个统计报表业务&#xff0c;查询的时间太慢&#xff1b;同时由于数据库的压力是随机性的&#xff0c;这个业务的执行下限和上限相差近20倍&#xff1b;快的时候可以达到600ms&#xff0c;慢的时候有9秒之多&#xff1b; 接下来详细介绍&#x…

STL--string

一、string介绍 string是表示字符序列的对象。 标准字符串类通过类似于标准字节容器的接口为此类对象提供支持&#xff0c;但添加了专门设计用于处理单字节字符字符串的功能。 字符串类是 basic_string 类模板的实例化&#xff0c;该模板使用char作为其字符类型&#xff0c;以…

【云原生进阶之容器】第五章容器运行时5.7--容器逃逸原理

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述

为什么要对员工行为进行安全管控?

ChatGPT的火热已不是一件新鲜事了。而现在更让大家热议的是&#xff0c;ChatGPT带来的网络安全风险&#xff0c;不少安全人员对此担心不已。因ChatGPT引起的网络安全事件&#xff0c;媒体也多有报道。 例如&#xff0c;近日&#xff0c;外媒就报道了三星因ChatGPT泄露了机密信息…

ChatGPT - 基于 Visual Studio Code 进行 AI 编码

2023-04-15 周六 杭州 晴 前情提要 ChatGPT &#xff0c;AutoGPT , AgentGPT 现在各种人工智能编码工具层出不穷&#xff0c;通过人工智能编码再也不用记大量的技术知识点了&#xff0c;现在所谓开发人员的经验性的东西也好像弱化了很多&#xff0c;我们可以更有效率的做自己…

Qt/QML编程学习之心得:QML界面设计(二)

都知道Qt是一种界面设计语言,那么它有几种设计方式UI technologies呢?答案是5种。 1、传统桌面所见即所得Classic desktop look-and-feel• Qt Widgets 2、 流畅、现代+触控Fluent, modern touch-based UX• Qt Quick 3、 三维3D becomes more and more important• Qt Open…

安全运营之资产安全信息管理

安全风险管理的三要素分别是资产、威胁和脆弱性&#xff0c;脆弱性的存在将会导致风险&#xff0c;而威胁主体利用脆弱性产生风险。网络攻击主要利用了系统的脆弱性。由于网络管理对象&#xff08;资产&#xff09;自身的脆弱性&#xff0c;使得威胁的发生成为可能&#xff0c;…

Linux 函数调用过程解析

一、Linux 函数调用过程解析 在x86的计算机系统中&#xff0c;内存空间中的栈主要用于保存函数的参数&#xff0c;返回值&#xff0c;返回地址&#xff0c;本地变量等。一切的函数调用都要将不同的数据、地址压入或者弹出栈。因此&#xff0c;为了更好地理解函数的调用&#xf…

QT 常见面试题

1、在Qt当中&#xff0c;多线程环境下&#xff0c;信号槽分别是在什么样的线程中执行&#xff1f;如何控制&#xff1f; 参考答案&#xff1a; 通过connect(...)第5个参数控制信号槽执行所在线程 connect(...)它的连接方式&#xff1a;队列连接、自动连接和直接连接 队列连…

EMC-MLCC电容反谐振点引起的RE辐射超标

MLCC电容反谐振点引起的RE辐射超标 对待RE辐射问题&#xff0c;可以按照干扰源&#xff0c;干扰路径&#xff0c;被干扰源&#xff0c;入手较多的是干扰源和干扰路径&#xff0c; 解决干扰源可以从展频&#xff0c;调频&#xff0c;屏蔽干扰源&#xff0c;增加RC snabber吸收…

ChatGPT颠覆者来了,能替代90%的人的工作?

前言 Auto GPT是一个实验性开源应用程序&#xff0c;展示了GPT-4语言模型的功能。该程序由GPT-4驱动&#xff0c;将LLM“思想”链接在一起&#xff0c;以自主实现您设定的任何目标。作为GPT-4完全自主运行的首批例子之一&#xff0c;Auto GPT突破了人工智能的极限。 特征 &a…