Python爬虫之入门保姆级教程,学不会我去你家刷厕所

2023-11-16

今天这个教程采用最简单的爬虫方法,适合小白新手入门,代码不复杂

文章目录

  • 今天这个教程采用最简单的爬虫方法,适合小白新手入门,代码不复杂
    • 首先打开咋们的网站
      • 一、导入相关库(requests库)
      • 二、相关的参数(url,headers)
      • 三、向网站发出请求
      • 四、匹配(re库,正则表达式)
      • 五、获取图片,保存到文件夹中(os库)
      • 完整代码

爬虫的介绍以及原理等等七七八八的东西我就不多bb了,咋们直接上教程

本案例我就以 彼岸图网 这个网站做教程,原网址下方链接

https://pic.netbian.com/

首先打开咋们的网站

可以看到有很多好看的图片,一页总共21张图片
在这里插入图片描述
我们右键选择检查或者直接按F12来到控制台

点击左上角的箭头或者快捷键ctrl+shift+c,然后随便点在一张图片上面

在这里插入图片描述
在这里插入图片描述
这时候我们就能看到这张图片的详细信息,src后面的链接就是图片的链接,将鼠标放到链接上就能看到图片,这就是我们这次要爬的
在这里插入图片描述

一、导入相关库(requests库)

import requests

requests翻译过来就是请求的意思,用来向某一网站发送请求

二、相关的参数(url,headers)

我们回到刚刚的控制台,点击上方的Network,按下ctrl+r刷新,随便点开一张图片
在这里插入图片描述
在这里插入图片描述
这里我们只需要到两个简单的参数,本次案例只是做一个简单的爬虫教程,其他参数暂时不考虑

参数 作用
Request URL 发送请求的网站地址,也就是图片所在的网址
user-agent 用来模拟浏览器对网站进行访问,避免被网站监测出非法访问


在这里插入图片描述
参数代码的准备

url = "https://pic.netbian.com/uploads/allimg/210317/001935-16159115757f04.jpg"
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
}

三、向网站发出请求

response = requests.get(url=url,headers=headers)
print(response.text) # 打印请求成功的网页源码,和在网页右键查看源代码的内容一样的

在这里插入图片描述
这时候我们会发现乱码?!!!!这其实也是很多初学者头疼的事情,乱码解决不难

# 通过发送请求成功response,通过(apparent_encoding)获取该网页的编码格式,并对response解码
response.encoding = response.apparent_encoding
print(response.text)

看着这些密密麻麻的一大片是不是感觉脑子要炸了,其实我们只需要找到我们所需要的就可以了
在这里插入图片描述

四、匹配(re库,正则表达式)

什么是正则表达式?简单点说就是由用户制定一个规则,然后代码根据我们指定的所规则去指定内容里匹配出正确的内容

我们在前面的时候有看到图片信息是什么样子的,根据信息我们可以快速找到我们要的
在这里插入图片描述
在这里插入图片描述
接下来就是通过正则表达式把一个个图片的链接和名字给匹配出来,存放到一个列表中

import re
"""
. 表示除空格外任意字符(除\n外)
* 表示匹配字符零次或多次
? 表示匹配字符零次或一次
.*? 非贪婪匹配
"""
# src后面存放的是链接,alt后面是图片的名字
# 直接(.*?)也是可以可以直接获取到链接,但是会匹配到其他不是我们想要的图片
# 我们可以在前面图片信息看到链接都是/u····开头的,所以我们就设定限定条件(/u.*?)这样就能匹配到我们想要的
parr = re.compile('src="(/u.*?)".alt="(.*?)"')
image = re.findall(parr,response.text)
for content in image:
    print(content)

在这里插入图片描述
这样我们的链接和名字就存放到了image列表中了,通过打印我们可以看到以下内容

image[0]:列表第一个元素,也就是链接和图片
image[0][0]:列表第一个元素中的第一个值,也就是链接
image[0][1]:列表第一个元素中的第二个值,也就是名字
在这里插入图片描述

五、获取图片,保存到文件夹中(os库)

首先通过os库创建一个文件夹(当前你也可以手动在脚本目录创建一个文件夹)

import os
path = "彼岸图网图片获取"
if not os.path.isdir(path):
    ok.mkdir(path)

然后对列表进行遍历,获取图片

# 对列表进行遍历
for i in image:
    link = i[0] # 获取链接
    name = i[1] # 获取名字
    """
    在文件夹下创建一个空jpg文件,打开方式以 'wb' 二进制读写方式
    @param res:图片请求的结果
    """
    with open(path+"/{}.jpg".format(name),"wb") as img:
        res = requests.get(link)
        img.write(res.content) # 将图片请求的结果内容写到jpg文件中
        img.close() # 关闭操作
    print(name+".jpg 获取成功······")

运行我们就会发现报错了,这是因为我们的图片链接不完整所导致的
在这里插入图片描述
我们回到图片首页网站,点开一张图片,我们可以在地址栏看到我们的图片链接缺少前面部分,我们复制下来 https://pic.netbian.com
在这里插入图片描述
在获取图片的发送请求地址前加上刚刚复制的https://pic.netbian.com在这里插入图片描述
运行,OK,获取完毕
在这里插入图片描述
在这里插入图片描述

完整代码

import requests
import re
import os

url = "https://pic.netbian.com/"
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
}

response = requests.get(url=url,headers=headers)
response.encoding = response.apparent_encoding

"""
. 表示除空格外任意字符(除\n外)
* 表示匹配字符零次或多次
? 表示匹配字符零次或一次
.*? 非贪婪匹配
"""
parr = re.compile('src="(/u.*?)".alt="(.*?)"') # 匹配图片链接和图片名字
image = re.findall(parr,response.text)

path = "彼岸图网图片获取"
if not os.path.isdir(path): # 判断是否存在该文件夹,若不存在则创建
    os.mkdir(path) # 创建
    
# 对列表进行遍历
for i in image:
    link = i[0] # 获取链接
    name = i[1] # 获取名字
    """
    在文件夹下创建一个空jpg文件,打开方式以 'wb' 二进制读写方式
    @param res:图片请求的结果
    """
    with open(path+"/{}.jpg".format(name),"wb") as img:
        res = requests.get("https://pic.netbian.com"+link)
        img.write(res.content) # 将图片请求的结果内容写到jpg文件中
        img.close() # 关闭操作
    print(name+".jpg 获取成功······")

本次教程到这里就结束了,是不是只爬了一页这么一点图片觉得不过瘾?

别急,下期我教大家如何获取十几页或者几十页甚至几百页的图片


  • 本次文章分享就到这,有什么疑问或有更好的建议可在评论区留言,也可以私信我
  • 感谢阅读~

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!

一、Python学习大纲

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

三、入门学习视频

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

五、python副业兼职与全职路线

在这里插入图片描述

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫之入门保姆级教程,学不会我去你家刷厕所 的相关文章

  • Erlang:到 Python 实例的端口没有响应

    我正在尝试通过 Erlang 端口与外部 python 进程进行通信 首先 打开一个端口 然后通过 stdin 将消息发送到外部进程 我期待在进程的标准输出上得到相应的答复 我的尝试如下所示 open a port Port open po
  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • 在函数内的 for 循环上使用 tqdm 来检查进度

    我正在使用 for 循环迭代目录树内的一大组文件 这样做时 我想通过控制台中的进度条来监视进度 因此 我决定使用 tqdm 来实现此目的 目前 我的代码如下所示 for dirPath subdirList fileList in tqdm
  • 如何替换Python字符串中的正确字母

    任务是 您的任务是纠正数字化文本中的错误 您只需处理以下错误 S 被误解为 5 O 被误解为 0 I 被误解为 1 我的代码 def correct string for i in string if 5 in string string
  • Python:json_normalize pandas 系列给出 TypeError

    我在 pandas 系列中有数万行像这样的 json 片段df json IDs lotId 1 Id 123456 date 2009 04 17 bidsCount 2 IDs lotId 2 Id 123456 date 2009 0
  • Python 内置对象的 __enter__() 和 __exit__() 在哪里定义?

    我读到每次使用 with 时都会调用该对象的 enter 和 exit 方法 我知道对于用户定义的对象 您可以自己定义这些方法 但我不明白这对于 打开 等内置对象 函数甚至测试用例是如何工作的 这段代码按预期工作 我假设它使用 exit 关
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • Python speedtest.net,或等效的[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否有一个 Python 库可以实现 SpeedTest net 测试或等效的互联网连接速度测试 GitHub上有一个项目叫速度检查 https gi
  • 如何找到多个 pandas 数据框中一对列与任意顺序对的交集?

    我有多个 pandas 数据框 为了简单起见 假设我有三个 gt gt df1 col1 col2 id1 A B id2 C D id3 B A id4 E F gt gt df2 col1 col2 id1 B A id2 D C id
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • Eclipse/PyDev 中未使用导入警告,尽管已使用

    我正在我的文件中导入一个绘图包 如下所示 import matplotlib pyplot as plt 稍后我会在我的代码中成功使用此导入 fig plt figure figsize 16 10 然而 Eclipse 告诉我 未使用的导
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • SQLAlchemy 与 count、group_by 和 order_by 使用 ORM

    我有几个函数需要使用 count group by 和 order by 进行一对多连接 我使用 sqlalchemy select 函数生成一个查询 该查询将返回一组 id 然后我对其进行迭代以对各个记录执行 ORM 选择 我想知道是否有
  • Chrome 驱动程序和 Chromium 二进制文件无法在 aws lambda 上运行

    我陷入了一个问题 我需要在 AWS lambda 上做一些抓取工作 所以我按照下面提到的博客及其代码库作为起点 这非常有帮助 并且在运行时环境 Python 3 6 的 AWS lambda 上对我来说工作得很好 https manivan
  • Tkinter 将鼠标点击绑定到框架

    我一定错过了一些明显的东西 我的 Tkinter 程序中有两个框架 每个框架在网格布局中都有一堆标签 我想将鼠标点击绑定到其中一个而不是另一个 我目前使用 root bind

随机推荐

  • JS姓名和手机号脱敏处理

    export const mixins 身份证脱敏 methods 身份证号脱敏 setCertNo certNo if certNo certNo length gt 10 var certNo certNo trim let cert1
  • 单片机学习,设置一个密码锁

    用矩形键盘和LCD1602设置一个单片机 这是做完后所有所需要的文件 模板 具体模板以及功能参考我之前发的文章 51单片机常用的一些模块 模块化编程 延时函数模块 delay 独立按键模块 key 数码管模块 Nixie LCD1602模块
  • 【论文精读】IGEV-MVS:Iterative Geometry Encoding Volume for Stereo Matching

    今天读的是发表于CVPR2023的文章 作者全部来自于华中科技大学 文章链接 Iterative Geometry Encoding Volume for Stereo Matching 项目地址 GitHub 目录 Abstract 1
  • C语言中的条件操作符和前置++、后置++的区别

    一 条件操作符 条件运算符 conditional operator 有时候也称为三元运算符 ternary operator 或者trinary operator 因为它是唯一需要 3 个操作数的运算符 exp1 exp2 exp3 条件
  • BZOJ4868 [Shoi2017]期末考试

    YY一下的话感觉代价关于最晚出分时间是一个单峰函数 三分最晚的出分时间 然后贪心一下算代价就行 如果A gt B就只用B就行了 要不然的话出分时间小于当前限制的都可以随便往后调直到到达限制 那么先尽量用A 调不到限制以内的再用B即可 inc
  • 提升Python代码性能的六个技巧

    文章目录 前言 为什么要写本文 1 代码性能检测 1 1 使用 timeit 库 1 2 使用 memory profiler 库 1 3 使用 line profiler 库 2 使用内置函数和库 3 使用内插字符串 f string 4
  • 关于 DEBUG到ps.executeUpdate();这一步不执行的问题

    20191008 今天下午在公司debug的时候 发现两个表的一直走到SQL执行那一层的时候不往下执行了 原因是这两个表我再用PLSQL进行查询的时候用了select from xxx for update语句 然后没有commit 导致表
  • Yii2安装与基本应用记录

    前面陆续实验了laravel和CI平台 安装部署与应用 今天咱们再尝试一下yii平台 听说yii平台可以通过程序配置后 自动生成功能代码 很值得启动 不说废话 走起 首先是安装 yii的安装比较简单 不需要很复杂的其它附带的东西 只需要Co
  • 删除链表元素详解版(Java)

    目录 题目 1 一般方法 2 虚拟头节点法 3 递归法 题目 Leetcode203题 移除链表元素 给你一个链表的头节点 head 和一个整数 val 请你删除链表中所有满足 Node val val 的节点 并返回 新的头节点 1 一般
  • 大数据毕业设计题目分享 毕设开题选题

    文章目录 0 前言 1 如何选题 1 1 选题技巧 如何避坑 重中之重 1 2 为什么这么说呢 1 3 难度把控 1 4 题目名称 1 5 最后 2 大数据 选题推荐 2 1 大数据挖掘类 2 2 大数据处理 云计算 区块链 毕设选题 2
  • Anaconda清华镜像--安装、配置与使用

    文章目录 1 Anaconda下载安装 1 1 下载地址 1 2 安装 2 配置清华镜像源 3 测试使用 4 未找到的模块 1 Anaconda下载安装 1 1 下载地址 清华镜像 https mirrors tuna tsinghua e
  • 差异范围柱状图

    图形效果 在这里插入图片描述 数据 程序 setwd C Users Think Desktop 项目 相关R包载入 library ggplot2 library dplyr library cols4all library patchw
  • VS Code 安装方法

    1 安装控制台程序 NET SDK 功能 应用能够正常的运行和构建 NET SDK下载地址 下载 NET Linux macOS 和 Windows 2 安装驱动编辑器vscode vscode下载地址 https code visuals
  • 配置ssd为缓存_结合群辉420+的存储配置,聊聊NAS硬盘该如何选

    最近几年随着大家拍照 拍视频的需求越来越强 手机容量一直水涨船高 从几年前64G就算 海量存储 到现在 256G是主流 512G不嫌多 很多小伙伴都感叹因为视频需求 手机的存储容量永远不够用 大量的视频文件 也就意味着传统的文件管理系统也继
  • 从0实现基于Linux socket聊天室-实现聊天室的公聊、私聊功能-4

    前面文章链接如下 从0实现基于Linux socket聊天室 多线程服务器模型 1 从0实现基于Linux socket聊天室 多线程服务器一个很隐晦的错误 2 从0实现基于Linux socket聊天室 实现聊天室的登录 注册功能 3 上
  • C语言memcpy函数的用法

    介绍 memcpy是memory copy的缩写 意为内存复制 在写C语言程序的时候 我们常常会用到它 它的函原型如下 void memcpy void dest const void src size t n 它的功能是从src的开始位置
  • GC垃圾回收机制

    GC垃圾回收机制 一 GC原理 1 为什么进行垃圾回收 二 JVM与回收算法 1 内存分配 2 回收算法 1 标记 清除 Mark sweep 2 复制 Copying 3 标记 整理 Mark Compact 4 分代收集算法 1 新生代
  • 高手思考问题的底层逻辑究竟是什么?

    花半秒钟就看透事物本质的人 和花一辈子都看不清事物本质的人 注定是截然不同的命运 01 人类是如何认识世界的 我们用视觉 听觉 味觉 嗅觉 触觉来感知这个世界 对一些现象习以为常 也许你从来没有思考过 光真的是五颜六色的吗 水果的味道真是甜
  • org.hibernate.HibernateException: Unable to make JDBC Connection

    部分错误日志 java lang UnsupportedOperationException The application must supply JDBC connections
  • Python爬虫之入门保姆级教程,学不会我去你家刷厕所

    今天这个教程采用最简单的爬虫方法 适合小白新手入门 代码不复杂 文章目录 今天这个教程采用最简单的爬虫方法 适合小白新手入门 代码不复杂 首先打开咋们的网站 一 导入相关库 requests库 二 相关的参数 url headers 三 向