引言
又到一年广大准研究生收获的季节,各位准研究生陆续收到了待录取学校的通知书,为了纪念曾经感动自己的岁月,很多研究生小鲜肉在百度贴吧考研吧版块发了自己的录取通知书图片。楼主对各个学校的研究生录取通知书挺感兴趣,咱们不如做个爬虫,把图片都抓取下了一探究竟吧。
多图,用手机流量的同学要注意哦
爬虫代码
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)#下载
这个爬虫比较简单,但是已经达到我们的目的。
下面晒一些名校的录取通知书吧,真是羡慕死我等屌丝学校同学。这里只上传了一部分,想看全部的请点击百度网盘的地址