Python基础项目——利用Python爬虫爬取淘宝网某类商品的图片

感谢关注天善智能,走好数据之路↑↑↑

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。​


这是跟着韦伟老师的Python数据分析课程做的爬虫实战项目,在这里记录下来,也方便学习分享。

2018-01-28 完成项目:

利用Python爬虫爬取淘宝网某类商品的图片


******Step1******

以连衣裙为例,观察淘宝网连衣裙商品第1页、第2页、第3页……网址的规律:

https://s.taobao.com/search?q=连衣裙&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s=0


https://s.taobao.com/search?q=连衣裙&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s=44


https://s.taobao.com/search?q=搜索词&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s=88


因此,不难发现出规律,q=后面接搜索词,s=(页数-1)*44


import urllib.request

import re

keyname="连衣裙"

key=urllib.request.quote(keyname)

for i in range(0,15):

url="https://s.taobao.com/search?q="+key+"&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s="+str(i*44)

    data=urllib.request.urlopen(url).read().decode("utf-8","ignore")


先尝试上述代码的运行,若没报错误说明可以读取到相应搜索词的网页,则可进行下一步。


****Step2****

接着在网页中查看源代码,找出高清大图的网址,并构造其正则表达式:

我们先在第一页右键单击某张图片,复制其图片地址:

https://gsearch2.alicdn.com/img/bao/uploaded/i4/i1/1985598030/TB1vTPZnL6H8KJjy0FjXXaXepXa_!!0-item_pic.jpg_230x230.jpg_.webp

打开该地址,发现是缩略图,并不是我们想要的高清图片。

通过与其他缩略图的网址相比较后,我们发现该网址中的TB1vTPZnL6H8KJjy0FjXXaXepXa为关键字符串,因此我们以此为关键字进行查找,仍显示没找到;我们将关键字缩短,最终发现,以“TB”为关键字,可以找到数十个类似以下格式的图片地址:

"pic_url":"//gsearch2.alicdn.com/img/bao/uploaded/i4/i2/1763644554/TB1VVVPocrI8KJjy0FhXXbfnpXa_!!0-item_pic.jpg"


我们将其打开,发现正是我们要找的高清大图的图片网址!

因此,我们构建出图片地址的正则表达式:

"pic_url":"//(.*?)"


接着step1的代码:

    pat='"pic_url":"//(.*?)"'

    imagelist=re.compile(pat).findall(data)

    for j in range(0,len(imagelist)):

        img=imagelist[j]

        imgurl="http://"+img

        file="F:/数据分析教程/result/taobao/"+str(i)+str(j)+".jpg"

        urllib.request.urlretrieve(imgurl,filename=file)


运行代码,没有报错,在python shell中输入imagelist查看是否成功:

部分结果如上图,以列表形式存储的,正常来说是成功的,再回到代码中设置的F:/数据分析教程/result/taobao/目录下,发现图片都存放其中,并以ij.jpg命名。


  点击其中某一张,确定是高清大图,项目实验成功!



文章来源:天善智能社区https://blog.hellobi.com/newest

作者:顾小t

猜你喜欢

转载自blog.csdn.net/r3ee9y2oefcu40/article/details/80423919