python爬虫爬取图片初级

声明本人也是编程菜鸟用的是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)

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值