美文网首页大数据 爬虫Python AI Sql
爬虫:for语句实现套图大图下载

爬虫:for语句实现套图大图下载

作者: 兴化吴奇隆 | 来源:发表于2019-05-25 23:06 被阅读1次

作为一名小白,初次尝试只创建1个函数,其他全部用for语句来遍历,对于for语句的理解,又再次加深了很多。下面就斗胆和各位大神分享一下,鄙人作为一名文科自学男,请多指教。
一、使用到的库:
1、requests
2、lxml中的etree
3、time
4、os
二、逻辑关系:
这里面很重要的,不懂逻辑就不能使用for语句表达:
1、打开一个网址,如这个case中的动物图片。正常进行requests、xpath获取单个套图的链接,再次进行requests、xpath,获取单个大图的链接,requests单个大图,方便进行二进制保存。
2、涉及到2次requests、xpath,分别是进入到套图中,进入到大图中,以及1次requests,为了保存。
3、break是特别重要的,遍历完了,执行什么操作。最后一次大图遍历后,不需要break,因为要保存套图。前面两次都需要break。分别解释一下:套图下载完break是回到上一级,要不然会一直下载同一组照片。
如:这个代码1,2,3,4,5,一共会打印5次,一个原理。

for y in [5,6,7]:
    b=[1,2,3,4,5]
    for x in b:
        print(x)

最后上代码吧:

import requests
from lxml import etree
import time
import os,sys
def getpage(url):
    r=requests.get(url,headers=headers)
    html=etree.HTML(r.text)
    wangzhi=html.xpath('//ul[@class="ali"]//li//div//a/@href')
    name=html.xpath('//ul[@class="ali"]//li//div//a/@title')
    for name2 in name:
        path = 'D:/pics/pic1/'
        if not os.path.exists(path + name2):
            os.mkdir(path + name2)
            for wangzhi1 in wangzhi:
                s = requests.get('https://www.ivsky.com' + wangzhi1)
                h = etree.HTML(s.text)
                jpg = h.xpath('//ul[@class="pli"]/li/div//a/@href')
                for jpg1 in jpg:
                    jpg2 = requests.get("https://www.ivsky.com" + jpg1, headers=headers)
                    q=etree.HTML(jpg2.text)
                    jpg3=q.xpath('//div[@id="pic_con"]//img/@src')
                    for jpg4 in jpg3:
                        jpg5=requests.get("http:"+jpg4,headers)
                        name1 = jpg4.split('/')[-1]
                        with open('D:\\pics\\pic1\\' + name2 + '\\' + name1, 'wb') as f:
                            f.write(jpg5.content)
                            print(name1 + "已下载完成")
                break;
            break;
if __name__=="__main__":
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome / 73.0.3683.86 Safari / 537.36"}
    urls=["https://www.ivsky.com/tupian/dongwutupian/index_{}.html".format(str(i)) for i in range(50)]
    for url in urls:
        getpage(url)
        time.sleep(0.1)

相关文章

网友评论

    本文标题:爬虫:for语句实现套图大图下载

    本文链接:https://www.haomeiwen.com/subject/lncttctx.html