Python3直接爬取图片URL并保存

有时候我们会需要从网络上爬取一些图片,来满足我们形形色色直至不可描述的需求。

一个典型的简单爬虫项目步骤包括两步:获取网页地址和提取保存数据。

这里是一个简单的从图片url收集图片的例子,可以成为一个小小的开始。


目录

获取地址

保存图片

其他

捕获异常

重连机制

修饰器

完整代码

 


获取地址

这些图片的URL可能是连续变化的,如从001递增到099,这种情况可以在程序中将共同的前面部分截取,再在最后递增并字符串化后循环即可。

抑或是它们的URL都保存在某个文件中,这时可以读取到列表中:

def getUrls(path):
    urls = []
    with open(path,'r') as f:
        for line in f:
            urls.append(line.strip('\n'))
    return(urls)

保存图片

在python3中,urllib提供了一系列用于操作URL的功能,其中的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应。具体细节请看注释:

def requestImg(url, name, num_retries=3):
    img_src = url
    # print(img_src)
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) \
        AppleWebKit/537.36 (KHTML, like Gecko) \
            Chrome/35.0.1916.114 Safari/537.36',
        'Cookie': 'AspxAutoDetectCookieSupport=1'
    }
    # Request类可以使用给定的header访问URL
    req = urllib.request.Request(url=img_src, headers=header) 
    t
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是Python网页图片保存的代码示例: ```python import requests from bs4 import BeautifulSoup import os # 目标网站 url = "https://unsplash.com/" # 请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} # 发送请求 response = requests.get(url, headers=headers) # 解析网页 soup = BeautifulSoup(response.text, "html.parser") # 获所有图片标签 img_tags = soup.find_all("img") # 创建保存图片的文件夹 if not os.path.exists("images"): os.mkdir("images") # 遍历图片标签,获图片链接并保存 for img_tag in img_tags: img_url = img_tag.get("src") if img_url.startswith("https://"): img_response = requests.get(img_url, headers=headers) with open("images/" + img_url.split("/")[-1], "wb") as f: f.write(img_response.content) print("保存成功:", img_url) ``` 解释: 1. 首先导入需要的库:requests发送网络请求、BeautifulSoup解析网页、os创建文件夹等。 2. 定义目标网站的URL和请求头。 3. 使用requests库发送网络请求,获得网页的响应。 4. 使用BeautifulSoup库解析网页,获所有图片标签。 5. 创建一个名为images的文件夹,用来保存图片。 6. 遍历所有图片标签,获图片链接,并判断是否为https协议开头的链接。 7. 如果是,使用requests库发送网络请求,获图片的二进制数据,并将其保存到images文件夹中,以图片的名称命名。 8. 打印保存成功的提示信息。 9. 完成保存

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值