python爬虫之壁纸的下载

python爬虫之壁纸的下载

好久没有写博客了,暑假这段时间在学校里面忙着写小论文,没机会写我最喜欢的爬虫了(虽然很简单,但架不住哥喜欢。。。)


好了,废话不多说了,开始把
本次爬虫爬取的是 手机壁纸(爱换壁纸的男人伤不起啊)
目标网址就定在 伟大的贴吧里了(壁纸吧

    这里插一句,以前用的IDE都是pycharm,虽说比较好用,但是最近发现一款IDE,就是anaconda内自带的spyder,感觉比pycharm更适合编程人员,因为它可以实现同步和局部编译,十分方便地查看每一个部分的结果。。各位看官可以试试。。



    老规矩,先打开目标网页http://tieba.baidu.com/p/5235094306,本次选的是壁纸吧里面的一个精品贴,里面的壁纸还是很吸引人的

    不错把,个人还是挺喜欢这种星空风格的。

    来吧,让我们端一碗BeautifulSoup鸡汤。。。话说,确实很好用啊
#coding:utf-8
from bs4 import BeautifulSoup
import requests
    没有安装这个酷的人,随便pip下就安装好了啊(忘记说了,本代码是基于python3.6)

    简单的说,requests是为了获取网页源代码的,然后使用BS来对html格式进行修正,以便后续更方便的使用BeautifulSoup来对其中我们需要的内容进行抓取。编写你就知道了
url = 'http://tieba.baidu.com/p/5235094306'
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"}#红色箭头的标示出了
html = requests.get(url,headers=headers)
bsObj = BeautifulSoup(html.text,'lxml')
    BeautifulSoup的基本用法在网上有很多,个人推荐其官方文档,附上链接:[Beautiful Soup 4.2.0 文档](https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html)
    代码效果如下:     

    至此,我们就获得了我们满意的请求页面,接下来需要对其进行分析,找出我们需要下载的图片的位置

    贴吧里,我寻找壁纸,一般只看帖子的主人,也就是 只看楼主 这个选项,其实真正我们要爬取得网页是在这个界面上如:http://tieba.baidu.com/p/5235094306?see_lz=1&pn=2
    这里插一句,我们爬虫的目的是自己的兴趣,但是死记住  代码这个是不靠谱的,网页千变万化的,难道要一个个记住吗?所以,侧重思路
    仔细观察上面这个链接,这是我在选中“只看楼主”选项后,调到第二页的情况下,所显示的网页链接,你不妨多点点其他的页数,会发现出现如下规律:

    http://tieba.baidu.com/p/5235094306?see_lz=1&pn=2
    http://tieba.baidu.com/p/5235094306?see_lz=1&pn=3
    http://tieba.baidu.com/p/5235094306?see_lz=1&pn=4

    我们可以将其看成是三部分组成:
    1 baseUrl = 'http://tieba.baidu.com/p/5235094306'
    2 seeLZ = '?see_lz'
    3 PN = '&pn='

    利用一个for循环即可实现我们所需要的多页

    再说关键点,我们需要将页面中壁纸的链接所找到并下载下来,第一步就得将壁纸链接抓取下来:

    观察发现,所有的壁纸的链接都隐藏在  3 号箭头所指的地方,该链接王权可以用BeautifulSoup解析出来,上代码:
    bsObj = BeautifulSoup(html.text,'lxml')
    imgs = bsObj.find_all('img',class_="BDE_Image")
    for i in imgs[0:4]:
        print(i)

这里写图片描述

这里写图片描述

    接下来只需进行下载的步骤就好了:    

这里写图片描述

这里写图片描述

上图只是部分测试代码,以辨明下载效果,文章末尾处会补充完整代码:

# -*- coding: utf-8 -*-
"""
Created on Wed Aug 23 20:20:33 2017

@author: hhh
"""

#%%
import requests
from bs4 import BeautifulSoup
import urllib
import time

base_url = 'https://tieba.baidu.com/p/4645322258?see_lz=1&pn='
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'}
#%%

def get_text(url,headers):
    return requests.get(url,headers)

#%%
def download(img_url,j,k):
    urllib.request.urlretrieve(img_url, 'E:\\wallPapers\\%d_%d.jpg' %(j,k))

#%%

for i in range(1,5):
    page_url = base_url+str(i)
    html = get_text(page_url,headers=headers)
    bsObj = BeautifulSoup(html.text,'lxml')
    imgs = bsObj.find_all('img',class_="BDE_Image")
    k=1
    for link in imgs:
        download(link.get('src'),i,k)
        time.sleep(1.000)
        k+=1
        print(link.get('src'))

这里写图片描述

基本完成了,写这样图片多的博客好麻烦啊,爬虫类的以后还是少写点。
PS:在用这个markdown编辑器的时候,get了一个小窍门,更改上传图片的大小
一般我们上传图片后,会得到一个如下图所示的部分:

这里写图片描述
此时,我们只需要将其改成:

width:宽度百分比
height:高度百分比
就能随心所欲的控制你的图片大小了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值