利用python3 requests和BeautifulSoup4抓取百度贴吧研究生录取通知书并展示

引言

又到一年广大准研究生收获的季节,各位准研究生陆续收到了待录取学校的通知书,为了纪念曾经感动自己的岁月,很多研究生小鲜肉在百度贴吧考研吧版块发了自己的录取通知书图片。楼主对各个学校的研究生录取通知书挺感兴趣,咱们不如做个爬虫,把图片都抓取下了一探究竟吧。

多图,用手机流量的同学要注意哦

爬虫代码

Talking is cheap,show me the code.

# -*- coding: utf-8 -*-
"""
Created on Sat Jul 11 21:31:39 2015

@author: Kevin
"""
import requests
import re
from bs4 import BeautifulSoup
import time
#定义一个抓取录取通知书的类
class Admission:
    headers={'User-Agent':u'Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0'}#这是请求头
    baseURL='http://tieba.baidu.com/p/3805717173?pn='#这是抓取页面的基础地址,=后面为贴吧页码
    #获取贴吧页面个数
    def getPageNum(self):
        #获取帖子页数的正则表达式
        url=self.baseURL+str(1)#页码个数在第一页就能找到
        htmltext=requests.get(url,headers=self.headers).text
        pattern = re.compile('max-page="(.+?)" type="text"')
        result= int(re.findall(pattern,str(htmltext))[0])
        return result
#取得所有通知书的地址        
    def getURL(self,numpage):
        realalllinks=[]
        for num in range(0,(numpage+1)):
            url=baseURL+str(num)
            htmltext=requests.get(url,headers=self.headers).text
            Soup=BeautifulSoup(htmltext)
            admissions= Soup.find_all('img',class_='BDE_Image')#通知书地址所在地
            alllinks=[]
            for each in admissions:
                eachlink=each.get('src')
                alllinks.append(eachlink)
            time.sleep(5)
            realalllinks.extend(alllinks)
        return realalllinks
   #保存图片     
    def saveImage(self,imgUrls):
        lenimages=len(imgUrls)
        DstDir="D:\\Documents\\Python Scripts\\通知书\\"#这是我保存的下载目录
        for imageNum in range(lenimages):
            imageName=str(imageNum)+'.jpg'
            imageurl=imgUrls[imageNum]
            response = requests.get(imageurl, stream=True)
            image = response.content
            realname=DstDir+imageName
            try:
                with open(realname,"wb") as jpg:
                    jpg.write(image)     
            except IOError:
                print("IO Error\n")
            finally:
                jpg.close
            time.sleep(1)


ad=Admission()
pagenum=ad.getPageNum()#取得页码,共计23页
allurl=ad.getURL(pagenum)#取得地址,共计296张图片
ad.saveImage(allurl)#下载

这个爬虫比较简单,但是已经达到我们的目的。

下面晒一些名校的录取通知书吧,真是羡慕死我等屌丝学校同学。这里只上传了一部分,想看全部的请点击百度网盘的地址
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值