Python入门-爬取图片并下载

# -*- coding: utf-8 -*-

"""

Created on Sat May  4 20:24:04 2019

 

@author: navy

"""

import re

import urllib

 

# 拿到页面数据

def getHtml(url):

  page = urllib.request.urlopen(url)

  html = page.read()

  return html

 

# 通过正则表达式获取图片路径

def getImage(html):

  reg = r'src="(.*?\.jpg)"'  # r表示不转移 . 匹配任意字符  .*? 后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符

  pattern = re.compile(reg, re.I)

  html = html.decode('gbk'); # 将字节转成字符串

  result = re.findall(pattern, html);

  count = 0;

  for imgUrl in result:

    print(imgUrl)

    count = count + 1;

    urllib.request.urlretrieve(imgUrl, "E:\python_workspaces\images\%s.jpg" % count, callbackfunc) #下载文件

  print("下载完成,总共有:", count, "张图片");

 

def callbackfunc(blocknum, blocksize, totalsize):

    """

    回调函数

    @blocknum: 已经下载的数据块

    @blocksize: 数据块的大小

    @totalsize: 远程文件的大小

    """

    percent = 100.0 * blocknum * blocksize / totalsize

    if percent > 100:

        percent = 100

    print("%.f%%" % percent)

    

if __name__ == '__main__': 

  html = getHtml("http://www.netbian.com/")

  getImage(html)

 

Python爬虫是一种可以自动从网页上获取数据的程序。以下是使用Python编写简单的爬虫程序来爬取图片的基本过程: 1. 准备工作:导入所需的库,例如requests和re。设置请求头,以模拟浏览器发送请求。创建一个文件夹来存储下载图片。 2. 发送请求并获取响应:使用requests库发送GET请求,传入目标网址和请求头。获取响应内容。 3. 解析响应内容:使用正则表达式找到所有图片的URL。正则表达式的模式可以根据具体的网页结构进行调整。 4. 遍历图片URL并下载:使用循环遍历每个图片URL,发送请求并获取响应。将响应内容保存到文件中,命名为图片的标题加上图片的后缀。 下面是一个简单的爬虫程序示例: ```python import requests import re import os image_folder = '表情包' # 设置保存图片的文件夹名称 if not os.path.exists(image_folder): os.mkdir(image_folder) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0' } response = requests.get('https://qq.yh31.com/zjbq/', headers=headers) response.encoding = 'utf-8' t = r'<img src="(.*?)" alt="(.*?)" width="160" height="120">' result = re.findall(t, response.text) for img in result: res = requests.get(img[0]) s = img[0].split('.')[-1] with open(image_folder + '/' + img[1] + '.' + s, mode='wb') as file: file.write(res.content) ``` 请注意,根据不同的网站和页面结构,代码中的正则表达式模式和其他部分可能需要进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值