【项目实战】使用urllib下载淘宝搜索到的图片

  下载搜索的图片,主要难点在与淘宝页面中复杂的图片地址,在源码中查找图片地址时,建议使用火狐浏览器。

import urllib.request
import re
import ssl

#全局取消证书验证
ssl._create_default_https_context = ssl._create_unverified_context

#设置淘宝搜索的关键词
keyword = urllib.request.quote("毛衣")

#将爬虫伪装成火狐浏览器
headers=("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0")

#创建一个opener对象 
opener = urllib.request.build_opener()

#为opener设置header
opener.addheaders = [headers]

#将opener设为全局
urllib.request.install_opener(opener)

#为了方便测试,仅下载两页的数据
for i in range(0,2):

    #把关键词添加到URL中并请求数据
    url = "https://s.taobao.com/search?q="+ keyword +"&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20180121&ie=utf8&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s="+str(44*i)
    data = urllib.request.urlopen(url).read().decode("utf-8","ignore")

    #测试是否请求到数据
    print(len(data))

    #使用正则表达式进行匹配
    pat = '"pic_url":"//(.*?)"'
    imgs  = re.compile(pat).findall(data)

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

        #用匹配到的网址建立完整的URL,并直接下载到本地
        thisurl = "http://" + imgs[j]
        file = "/Users/Rocky1/Desktop/imgs/" + str(i) + "-" + str(j) + ".jpg"
        urllib.request.urlretrieve(thisurl,file)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值