python 爬取京东手机图

初学urllib,高手勿喷...

import re
import urllib.request
#函数:每一页抓取的30张图片
def craw(url,page):
    imagelist = []#这里每次都要重新定义新的空列表,第一次没有定义结果爬取的都是一样的图片
    html1 = urllib.request.urlopen(url)
    data = str(html1.read())
    patter1 = '<li class="gl-item".+?</li>'
    result1 = re.compile(patter1).findall(data)
    patter2 = '//img.+?.jpg'#用.+?代表的是中间可是是任意多个字符
    for i in range(30):
        result_temp = result1[i]
        imagelist.append(re.compile(patter2).findall(result_temp))#用compile和findall得出的是列表,再将得到的列表加入整个的一个列表
    for i in range(1,30):#一开始调试用的是笨办法一个个的点,后来发现可以在断点处设置i==4
        try:#在imagelist中有存在图片抓取失败的情况,最懒的解决办法就是用try——except,无论出现什么情况都pass掉
            imageurl = "http:"+str(imagelist[i][0])
            imagename = "D:/picture/"+str(page)+str(i)+".jpg"
            result = urllib.request.urlopen(imageurl)#得到图片的地址后,**还是用打开连接用read()得到data的方法获取图片
            if (result.getcode() != 200):#如果链接不正常,则跳过这个链接
                pass
            else:
                data = result.read()  # 否则开始下载到本地
                with open(imagename, "wb") as code:
                    code.write(data)
                    code.close()
        except:
            pass



url = 'https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&cid2=653&cid3=655&page='
for i in range(2,10):#先从2页爬取到9页
    url_new = url + str(2*i-1)#分析每页的地址将page后的无用的地方删去,再加上(2n-1),n为页数
    craw(url_new,i)

 

转载于:https://www.cnblogs.com/cunyusup/p/7341495.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值