美文网首页
python3爬取豆瓣一拍图片(不完善)

python3爬取豆瓣一拍图片(不完善)

作者: echohsq | 来源:发表于2017-02-24 23:27 被阅读238次

    欢迎关注我的博客

    python实战之爬取豆瓣一拍上的摄影图片

    在学校的时候就断断续续的学习Python3的基础知识,但是总想找一个实际项目练一练手,所以我选择了爬虫,好玩,好用,基础知识差不多也都用得上.

    熟悉工具

    俗话说的好,工欲善其事必先利其器
    写一个爬虫需要一些帮助我们的工具,我们需要使用pip安装一下我们需要的第三方库

    1.BeautifulSoup

    BeautifulSoup是一个html的解析器,他可以查找html标签中的内容,使用极其方便.
    主要使用BeautifulSoup中的findAll方法将我们需要的html中包裹的图片链接提取出来.

    2.requests

    requests是Python的一个http的第三方库,它可以为我们实现get,put,post,cookie...等功能,是一个取代Python内置urllib的有力选择.

    在Python3的基础上开始工作

    首先我们要对前端知识要有一定的了解,我们要会分析网站页面html上的标签的含义,我们找到豆瓣一拍的网页,用f12来查看网页源代码,找到页面链接以及,每个链接打开后的图片链接,当我们取得<a/>标签和<div/>class类后,我们就可以使用BeautifulSoup来分离出链接地址了,然后使用for循环依次遍历列表,把网页中的翻页链接链接全部查找完,然后再把每个页面的图片下载下来.
    在此处贴上源码:(后续仍会更新,视学习进度而定)

    import requests
    from urllib.request import urlretrieve
    from bs4 import BeautifulSoup
    headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
    }
    for i in range(1,51):
        url = "https://ypy.douban.com/package?page="+str(i)
        r = requests.get(url, headers = headers)
        bsObj = BeautifulSoup(r.text, "html.parser") #urllib.request不需要加`.text`
        imagesSet = bsObj.findAll("a", {"class": "lnk-pic-card"})
        for image in imagesSet:
            photoUrl = "https://ypy.douban.com"+image["href"]
            r1 = requests.get(photoUrl, headers = headers)
            bsObj1 = BeautifulSoup(r1.text, "html.parser")
            images = bsObj1.findAll("div", {"class": "pic-wrapper"})
            for image1 in images:
                photoName = image1.img.attrs["data-src"][28:]+".jpg" #创造独一无二的文件名
                urlretrieve(image1.img.attrs["data-src"], photoName) #Python自带的保存多媒体文件的方法
        print(i) #打印下载的页数信息
    
    

    相关文章

      网友评论

          本文标题:python3爬取豆瓣一拍图片(不完善)

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