接上篇——从数据库中提取图片url并下载

上篇我们成功抓取了天猫评论中的内容和图片,今天我写了个下载器,目的在于将保存在数据库中的图片url提取出来,并将这些图片下载到本地。

第一步,利用pymysql将所需的链接提取出来:

首先,链接数据库

conn = pymysql.connect(host="localhost", user="root", password="1409", port=3306, db="tmall", charset="utf8")

然后将我们所需的数据拿出来

    conn=connect_db()
    cursor=conn.cursor()
    sql='select flag,pics,appendpics from nikeshoes'
    cursor.execute(sql)
    imgs = cursor.fetchall()
    return  imgs

这里,我不仅拿了url,还将flag也拿出来了,这里的flag是序号,我数据库里有1000条信息,所以flag就是1到1000,拿这个信息的目的在于之后的图片命名,不然我哪知道下载下来的图片是哪条评论的。

第二步,对拿出来的信息进行筛选、格式补全

    for i in range(0, 1000):
        for j in (1, 2):  # 1:pics 2:appendpics
            if (imgs[i][j].strip() != ''):
                img_url = re.findall(r'//[^\s]*', imgs[i][j])
                for k in range(0, len(img_url)):
                    a = 'http:' + img_url[k].strip().strip('\']\,')

因为之前抓取信息时,将图片链接保存在一起了,导致发生三条图片url被当作一个url进行保存,所以我这里使用正则将每个url分离出来,分离后发现它作为下载链接还存在格式上的错误,所以用strip()删除一些不要的字符并在最前面加上 http: ,这样a就是一个完整的可用于下载的图片链接

最后一步,下载

urllib.request.urlretrieve(a, 'D:/tmall_pics/' + str(imgs[i][0]) + '_' + str(j) + '_' + str(k) + '.jpg')
#imgs[i][0]为flag,说明该图片来自哪个评论,命名给规则为:序号为flag的评论 的第几个图片  或追加评论的第几个图片

为了识别图片来自哪条评论,这里做了特殊的命名规则

成果展示:


1000条评论共357张图片,还算可以吧,至少我是这么认为微笑

在下载下来的图片中,我发现有些买家在上传图片时还是很有意思的,

比如这样:


还有这样:




本人学生,对于python的学习也是刚刚入门,本文及代码如有漏洞,还请各路大神不吝赐教,谢谢!微笑


:转载请标明出处!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值