【注意】妹子图python爬虫

作者: 记事本的记事本 | 来源:发表于2018-06-08 13:55 被阅读324次

    下方有太过...不含蓄的画面 快闪开


    9150e4e5ly1fs3g0aqj8nj20a705c0tm.jpg
    事情的起因是这样的
    emmmmm向来慷慨大度的我 怎么能破坏了群友的性质,于是乎~拿起键盘 摔起鼠标 来干 9150e4e5gy1fs3fyxur15j205i03naa3.jpg

    同时 本人刚简书刚开通两天,来的大哥大姐们(小姐姐诶)觉得不错~可以点个关注后面的内容敬请期待

    成果图

    QQ图片20180608131951.jpg

    [图片上传中...(QQ截图20180608132309.png-ec0f3b-1528435524958-0)]

    我们要爬取的网站为

    进行翻页

    QQ截图20180608132504.png
    hahah.png

    这样我们找到了 每翻一页 url的变化
    现在我们分析一下单页图片爬取

    chrome 浏览器 按f12 打开开发者工具

    点击
    点击图片进去
    chatu2.png

    那么我们采用两个函数来解决这个问题

    第一步获得主页上的所有的合集的url

    header ={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',  }
    first = 'http://www.meizitu.com/a/more_1.html'
    def scrawl(url):
    
        zy_url = url
        print(url)
        zy_rs = requests.get(url,headers = header)
        zy_rs.encoding='gb2312' 1
        print(zy_rs.status_code)
        print(zy_rs.text)
    
        p = re.compile(r'http://www.meizitu.com/a/(\d+).html')
    for x in p.finditer(zy_rs.text):
             img_url =x.group(1)
             zhuye='http://www.meizitu.com/a/'+str(img_url)+'.html'
            #下方函为合集中图片的保存下载
             img_scrawl(zhuye)
    
    
        print('正在进行下一页的下载')
    

    第二步 点击合集中所有图片url的构造方式,并用正则表达式提取出来后进行保存下载

    def img_scrawl(url):
    
         img_url_rs =requests.get(url)
    
         img_url_rs.encoding='gb2312'
         p = re.compile(r'<img alt="(.*?)" src="(.*?)" />')
         for x in p.finditer(img_url_rs.text):
            name = x.group(1)#获得图片的url
            load_url = x.group(2)#获得图片的名称
    
    
            img = requests.get(load_url,stream=True,headers=header)
            if  img.status_code==200: #请求为200时返回正常
                global n #记录图片的下载数量
                n=n+1
                print(n)
                with open(name+'.jpg','wb') as f:
                    for chunk in img:
                        f.write(chunk)
    

    第三步第一个主页下载完之后需要翻页

    那么


    chatu4.png
        p = re.compile(r"<li><a href='(.*?)'>下一页</a></li>")
    
        for x in p.finditer(zy_rs.text):
            print('开始下载')
            pipei_ =x.group(1)
            print(pipei +'开始下载')
            uuu =  'http://www.meizitu.com/a/'+pipei_
    
            scrawl(uuu)
    

    把这段代码放到第一步代码的后面 于是形成了递归

    完整代码如下表所示

    import re
    import requests
    #"http://www.meizitu.com/a/5578.html"
    header ={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
            
                }
    proxies = { "http": "http://171.37.141.89:9797"} 
    
    def scrawl(url):
    
        zy_url = url
        print(url)
        zy_rs = requests.get(url,headers = header)
        zy_rs.encoding='gb2312'
        print(zy_rs.status_code)
        print(zy_rs.text)
        print('123')
        p = re.compile(r'http://www.meizitu.com/a/(\d+).html')
        #l = p.findall(zyrs.text)
        for x in p.finditer(zy_rs.text):
             img_url =x.group(1)
             zhuye='http://www.meizitu.com/a/'+str(img_url)+'.html'
             img_scrawl(zhuye)
             #<a href="/a/more_1.html">下一页</a>
        print('正在进行下一页的下载')
        p = re.compile(r"<li><a href='(.*?)'>下一页</a></li>")
    
        for x in p.finditer(zy_rs.text):
            print('开始下载')
            pipei_ =x.group(1)
            print(pipei +'开始下载')
            uuu =  'http://www.meizitu.com/a/'+pipei_
            scrawl(uuu)
    def img_scrawl(url):
         img_url_rs =requests.get(url)
    
         img_url_rs.encoding='gb2312'
         p = re.compile(r'<img alt="(.*?)" src="(.*?)" />')
         for x in p.finditer(img_url_rs.text):
            name = x.group(1)
            load_url = x.group(2)
            print(name)
            print(load_url)
    
            img = requests.get(load_url,stream=True,headers=header)
            if  img.status_code==200:
                global n
                n=n+1
                print(n)
    
                with open(name+'.jpg','wb') as f:
                    for chunk in img:
                        f.write(chunk)
    aa = 'http://www.meizitu.com/a/more_1.html'
    n=0
    continue_ =True
    scrawl(aa)
    
    

    有任何问题下方评论,会回复的~感谢

    相关文章

      网友评论

      本文标题:【注意】妹子图python爬虫

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