首页 > 编程语言 >python爬虫爬取图片初级

python爬虫爬取图片初级

时间:2024-07-04 23:28:39浏览次数:23  
标签:name get python 爬虫 爬取 re url import con

声明本人也是编程菜鸟用的是pycharm,全是我自已的理解若有错误的地方欢迎指出

1.首先导入包

import requests
import re
import time

requests 网页请求

re 正侧表达式

time 防止过快爬取导致网站崩溃

2.爬虫基础代码获取网页请求

这里我爬的是彼岸图:https://pic.netbian.com/

url = 'https://pic.netbian.com/'

header = {
    "user-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 "
                  "Safari/537.36 Edg/122.0.0.0"
}
con = requests.get(url=url, headers=header)
print(con)

这样就可以向网页发送请求

得到以下效果:

3.获取网页代码

text = con.text

这样就可以获取前端html代码了

4.正侧匹配

parra = re.compile(r'src="(/u.*?)".alt="(.*?)"', re.S)  # 'src="(/u.*?)".alt="(.*?)"' /u按规则进型匹配
re_get = re.findall(parra, text)

得到下面效果:

这里有人会说图片名字不对呀,个人理解是乱码了,也就是解码出问题了加以下代码就好:

con.encoding = con.apparent_encoding  # 译码文字,utf-8得不了<img src="(.*?)" alt="(.*?)">  re_get1 = parra1.findall(a)

效果如下:

5.图片保存

path = '美食图片'
if not os.path.isdir(path):  # 判断是否存在该文件夹,若不存在则创建
    os.mkdir(path)  # 创建
for i in re_get:
    time.sleep(1)
    link = i[0]
    name = i[1]
 with open(path+"/"+"{}.jpg".format(name), 'wb') as f:
        res = requests.get(url+link)
        f.write(res.content)
        f.close()
    print(name+".jpg获取成功")

link记录图片连接,name记录图片名字

这里记得一定要加

time.sleep(*)

防止将网页爬崩

这里可能会在第二个图片出错,那是因为文件保存不能有特殊符号如:*,所以各位爬取时要注意如果有加入以下代码:(加到name下即可)

第一种:

 name = name.replace("*", "")# 字符串替换将字符串特殊符号替换

第二种:

name = re.sub(r"\*", "", name)

即可替代图片名字中的“*”为空格

这里我用的是第一种

否则会出现:

所以以后大家如果保存文件出错注意是不是名字原因

下面是完整代码:

import pandas
from bs4 import BeautifulSoup

import requests
import re
import time


url = 'https://pic.netbian.com/'

header = {
    "user-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 "
                  "Safari/537.36 Edg/122.0.0.0"
}
con = requests.get(url=url, headers=header)
con.encoding = con.apparent_encoding  # 译码文字,utf-8得不了<img src="(.*?)" alt="(.*?)">  re_get1 = parra1.findall(a)
text = con.text
parra = re.compile(r'src="(/u.*?)".alt="(.*?)"', re.S)  # 'src="(/u.*?)".alt="(.*?)"' /u按规则进型匹配
re_get = re.findall(parra, text)
path = '美食图片'
for i in re_get:
    time.sleep(1)
    link = i[0]
    name = i[1]
    name = name.replace("*", "")# 字符串替换将字符串特殊符号替换
    print(name)
    with open(path+"/"+"{}.jpg".format(name), 'wb') as f:
        res = requests.get(url+link)
        f.write(res.content)
        f.close()
    print(name+".jpg获取成功")

print(re_get)

标签:name,get,python,爬虫,爬取,re,url,import,con
From: https://blog.csdn.net/m0_73655780/article/details/140191721

相关文章

  • 2024华为OD机试真题-根据IP查找城市-(C++/Python)-C卷D卷-200分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)       题目描述某业务需要根据终端的IP地址获取该终端归属的城市,可以根据公开的IP地址池信息查询归属城市。地址池格式如下:城市名=起始IP,结束IP起始和结束地址按照英文逗号分隔,多个地址段采用英文分号分隔。比......
  • python logging 自定义备份的日志文件命名
    importtimeimportloggingfromlogging.handlersimportTimedRotatingFileHandlerdeflog_file_namer(log_file_name):log_file_name_split=log_file_name.split('.')log_suffix=log_file_name_split.pop(1)log_file_name_split.append(l......
  • L1-009 N个数求和 python
    python实现:需要考虑很多情况:如果只输入一个数:分子/分母是否有商,是否需要约分,如:8/3,-8/3,0/3。如果输入多个数:通分后分子>0,<0还是=0,分子/分母是否有商,是否需要约分。num=int(input())s=input()ifnum==1:fenzi=int(s.split("/")[0])fenmu=int(s.split("/")[1])......
  • 【网络爬虫程序】
    importurllib.requestimporttimeimportrandomimportosdeffetch_webpage(url):  #设置User-Agent  user_agent='Sogouwebspider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)'     #创建请求对象,并设置User-Agent  reque......
  • Python酷库之旅-第三方库Pandas(001)
    目录一、Pandas库的由来1、背景与起源1-1、开发背景1-2、起源时间2、名称由来3、发展历程4、功能与特点4-1、数据结构4-2、数据处理能力5、影响与地位5-1、数据分析“三剑客”之一5-2、社区支持二、Pandas库的应用场景1、数据分析2、数据清洗3、数据可视化4、......
  • 2024 年亚太杯 APMCM 数学建模竞赛 B题 洪水灾害的数据分析与预测 详细思路+matlab代
    比赛期间24小时内半价,思路会结合chatgpt-4,都是个人比赛思路,可能不是很好,但是24年所有数学建模思路都会发布到这一个专栏内,只需订阅一次,感谢大家的一直支持!!!B题洪水灾害的数据分析与预测洪水是暴雨、急剧融冰化雪、风暴潮等自然因素引起的江河湖泊水量迅速增加,或者水位迅猛......
  • Python基础语法(与C++对比)(持续更新ing)
    代码块Python在统一缩进体系内,为同一代码块C++{...}内部的为同一代码块注释Python单行注释:#...多行注释:'''...'''C++单行注释://...多行注释:/*...*/数据类型1.Python数据类型    Python中支持数字之间使用下划线'_'分割数字,旨在查看方便    ......
  • Python学习笔记28:进阶篇(十七)常见标准库使用之质量控制中的代码质量与风格第二部分
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • 【python爬虫实战】进阶天气虫虫(过程复盘 & 心得分享)
    程序设计过程里的一些心得:0.规模较大的程序,往往都是以更小的功能块搭建起来的。如此,为了提升总体程序的构建效率,笔者发现分“两步走”会比较高效:    A.遇到需要反复调试的功能块,可先在另一程序中逐一单独测试某一功能块(这有助于突出模块本身的细节问题)   ......
  • 2024 年第十四届 APMCM 亚太杯 数学建模 A题 飞行器外形的优化问题 详细代码+思路+mat
     比赛期间24小时内半价,思路会结合chatgpt-4,都是个人比赛思路,可能不是很好,但是24年所有数学建模思路都会发布到这一个专栏内,只需订阅一次,感谢大家的一直支持!!!A题飞行器外形的优化问题飞行器是在大气层内或大气层外空间飞行的器械。飞行器可以分为:航空器、航天器、火箭和导......