爬取堆糖网美女

  • ajax 请求,获取美女信息。
  • 看代码
import jsonpath
import requests



class Request(object):
    """请求的装饰器"""
    def __init__(self,func):
        self.func=func
    def __call__(self, url,headers,flg=None):
        resp = requests.get(url, headers=headers) # 默认返回json flg=True,返回bytes,flg=False 返回 str
        if flg ==None:
            con = resp.json()
        elif flg==False:
            con=resp.text
        else:
            con = resp.content
        return self.func(con,url)

@Request
def get_img_url(content,url=None):
    """获取图片的url"""
    img_list = jsonpath.jsonpath(content,'$..path') # 返回一个列表   “$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key时,程序会返回false
    return img_list

@Request
def save_img(content,url=None):
    """保存图片"""
    with open("./pic/"+url.split("/")[-1],'wb') as f:
        f.write(content)

def run():
    """启动程序"""
    ur = "https://www.duitang.com/napi/blog/list/by_search/?kw=%E7%BE%8E%E5%A5%B3&type=feed&start={}"
    headers = {'User-Agent': "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}

    for i in range(0,100,24):
        url= ur.format(i)
        img_list=get_img_url(url,headers=headers)
        for img in img_list:
            save_img(url=img,headers=headers,flg=True)

if __name__ == '__main__':
    run()

在这里插入图片描述

发布了127 篇原创文章 · 获赞 25 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_44224529/article/details/104263081