• 使用request+Beautiful爬取妹子图


    一、request安装

    pip install requests
    

    request使用示例

    import requests
    response = requests.get('https://www.mzitu.com/') # get()方法发送请求,获取HTML网页
    response.status_code  # 返回状态码
    response.text  #以文本格式返回网页内容
    response.content  # 以二进制形式返回
    

    二、BeautifulSoup库

    BeautifulSoup是Python的一个库,最主要的功能就是从网页爬取我们需要的数据。BeautifulSoup将html解析为对象进行处理,全部页面转变为字典或者数组。

    pip install beautifulsoup4
    

    BeautifulSoup基本使用

    三、抓取图片

    from bs4 import BeautifulSoup
    url='http://www.mzitu.com'
    res = requests.get(url)    # get()方法发送请求,获取HTML网页
    soup = BeautifulSoup(res.text, 'html.parser')  # # 使用BeautifulSoup来解析我们获取到的网页 
    
    #coding=utf-8
    import requests
    from bs4 import BeautifulSoup
    def imgurl(url):
        res = requests.get(url)   # url为a标签的helf链接,即为图片封面的图片
        soup = BeautifulSoup(res.text, 'html.parser')   # 使用BeautifulSoup来解析我们获取到的网页
        page = int(soup.select('.pagenavi span')[-2].text)   # 获取总页数,-2为去掉上下页
        # a = soup.select('.main-image a')[0]  # 获取当前图片链接
        # src = a.select('img')[0].get('src')
        src = soup.select('.main-image a img')[0].get('src')  # 获取图片链接
        meiziid = src[-9:-6]  # 切片将src的倒数的字符串做名字
        print('开始下载妹子:', format(meiziid))  # 输出窗口提示下载
        for i in range(1, page+1):
            i = '%02d' % i
            img = src.replace('01.jpg', str(i)+'.jpg')  # replace()替换页数
            #  添加headers模拟浏览器工作 反反爬
            headers = {
                'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
                'Referer': 'http://www.mzitu.com'
            }
            response = requests.get(img, headers=headers)
    
            f = open('/Users/xcn/Desktop/mzitu/'+meiziid+'%s.jpg' % i, 'wb')  # 放在D:666目录下
            f.write(response.content)
            f.close()
            print('===> %s 完成 ' % (meiziid + i))
        print(' %s 已下载
    ' % meiziid)
    
    
    def imgpage(page=''):
        res = requests.get('http://www.mzitu.com/page/' + page)
        soup = BeautifulSoup(res.text, 'html.parser')  # 解析页面
        href = soup.select('#pins a')  # 筛选
    
        list = set([i.get('href') for i in href])  # 遍历获取筛选后的href链接并用set()去掉重复的链接
        [imgurl(i) for i in list]  # 遍历下载
    
    
    result = input('下载哪一页:')
    imgpage(result)
    

    四、大功告成

  • 相关阅读:
    一个word小技巧
    Android 自定义组件之 带有悬浮header的listview
    传智播客 java基础 相关资料 Day2
    js取整 摘抄
    ifram子页面父页面相互调用
    寻知图项目收获--项目管理方面
    圣经学习 读经群读经记录(一)申命记5-7章
    java1234教程系列笔记 S1 Java SE chapter 02 写乘法口诀表
    java1234教程系列笔记 S1 Java SE chapter 02 lesson 03 java基本数据类型
    java1234教程系列笔记 S1 Java SE 02 eclipse初步使用、注释、标识符
  • 原文地址:https://www.cnblogs.com/baishuchao/p/9282226.html
Copyright © 2020-2023  润新知