正则表达式爬取慕课网课程图片

慕课网课程图片爬取
本文介绍了一个简单的Python爬虫程序,用于从慕课网抓取课程图片。使用urllib2和re模块,通过正则表达式匹配图片链接,并下载至本地。

这是一个非常简单的爬虫小程序,不过非常有利于对Python正则表达式的理解。
首先,我们确定目标网页
http://www.imooc.com/course/list
我们要用的python模块有urllib2以及re模块:

import urllib2
import re

抓取目标网页:

req = urllib2.urlopen('http://www.imooc.com/course/list')
html = req.read()

这时候我们发现图片在html文件中的标签是这样的:

<img class="course-banner lazy" data-original="http://img.mukewang.com/5704a5d50001582f06000338-240-135.jpg"

由此,我们就能通过如下方式找到整个页面的全部图片链接:

links = re.findall(r'http:.+\.jpg',html)

随后我发现得到的链接中还有这样的形式:

 'http://img.mukewang.com/56f22f3900012d0206000338-240-135.jpg" src="http://img.mukewang.com/56f22f3900012d0206000338-240-135.jpg',

这显然是不利于我们下载图片的,然后我想到了可以用限制中间的字符的数量来分割链接:

In [56]: links = re.findall(r'http:.+{5,60}\.jpg',html)

这样,就得到了整个网页内所有课程图片的链接,随后,通过一个for循环将图片依次下载到本地:

i = 1
for link in links:
    f = open(str(i) + '.jpg','w')
    req = urllib2.urlopen(link)
    buf = req.read()
    f.wirte(buf)
    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、付费专栏及课程。

余额充值