利用urllib,正则表达式,文件读写,爬取慕课网首页图片

本文介绍使用Python的urllib库结合正则表达式爬取慕课网首页图片的方法。通过发送HTTP请求获取网页源码,并从中提取所有图片链接,最后下载图片到本地。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用urllib,正则表达式,文件读写,爬取慕课网首页图片

from urllib import request, parse, error
import re    # 目前是先写代码,再导入需要的模块
import os
url = 'http://www.imooc.com/'   # 慕课网首页

with request.urlopen(url) as response:
    # response.read() 返回 bytes 类型,需要转换为 str 进行正则
    html_page = response.read().decode('utf-8')
# r'http://.+\.jpg' 会匹配到其他信息
img = re.compile(r'http://**[\.\d\-a-zA-Z\/\s]**+\.jpg')         
img_urls = re.findall(img,html_page)      

补写 re.findall() 的知识

i = 0
for url in img_urls:
    i += 1
    try:
        with open(str(i)+'.jpg','wb') as f:      # open(file_name,'wb') 以二进制形式打开图片
            with request.urlopen(url,timeout = 3) as req_url:
                img_buf = req_url.read() # .decode('utf-8')
            f.write(img_buf)
            print('No. %d.jpg is downloaded!' % i)
    except error.URLError as e:
        print('something is wrong!')
        os.remove(str(i)+'.jpg')
        i -= 1

这里只爬取了一个页面的图片,还可以对多个页面进行爬取。
没有进行模块化


### 使用正则表达式爬取京东商品图片 为了实现从京东站上抓取商品图片的任务,可以采用Python编程语言并利用`re`库中的编译函数来创建正则表达式对象[^4]。此过程涉及构建特定于目标页结构的模式串以定位图像URL。 考虑到不同商品页面布局可能存在差异,在实际应用前需先分析待处理HTML源码找出共同特征作为匹配依据。对于本案例而言,已观察到各产品展示区内的img标签src属性值遵循一定规则[^3],这成为编写正则的关键线索之一。 下面给出一段示范性的脚本片段用于说明上述思路: ```python import re from urllib.request import urlretrieve, urlopen import time # 假设获取到了某类目下所有商品列表页的内容html_text html_text = "" # 这里应通过络请求获得真实的HTML文档内容 pattern = r'data-lazy-img="//(.*?\.jpg)"' # 构造适用于提取图片路径部分的正则表达式 regex = re.compile(pattern) matches = regex.findall(html_text) for i, match in enumerate(matches): img_url = f"https://{match}" filename = './images/' + str(time.time()) + '.jpg' try: urlretrieve(img_url, filename=filename) print(f'Successfully downloaded {i+1} images') except Exception as e: print(e) ``` 这段代码实现了基于给定模板构造出能够识别指定格式JPEG文件地址的功能,并尝试将其下载至本地磁盘中存储起来。需要注意的是,由于络环境复杂多变以及站点反扒措施的存在,执行此类操作时务必谨慎行事,尊重服务提供商的相关规定[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值