python爬虫论文ppt_Python新手爬虫,爬取PPT模板

爬取网站:第一PPT(

先上最后成功的源码:

import requests

import urllib

import os

from bs4 import BeautifulSoup

from fake_useragent import UserAgent

def getPPT(url):

f = requests.get(url,headers=headers) #发送GET请求

f.encoding = f.apparent_encoding #设置编码方式

soup1 = BeautifulSoup(f.text,'lxml')

classHtml = soup1.find('div',class_="col_nav i_nav clearfix").select('a') #在html中寻找类别

for i in classHtml[:56]:

classUrl = i['href'].split('/')[2] #将ppt模板类别关键词存到classUrl

if not os.path.isdir(r'D:\PPT\\'+i['title']): #判断有无此目录

os.mkdir(r'D:\PPT\\'+i['title']) #若无,创建此目录。

else:

continue #若有此目录,直接退出循环,就认为此类别已经下载完毕了

n = 0

for y in range(1,15): #假设每个类别都有14页ppt(页数这一块找了很久,没找到全部获取的方法,只能采取此措施)

pagesUrl = url+i['href']+'/ppt_'+classUrl+'_'+str(y)+'.html'

a = requests.get(pagesUrl,headers=headers)

if a.status_code != 404: #排除状态码为404的网页

soup2 = BeautifulSoup(a.text,'lxml')

for downppt in soup2.find('ul',class_='tplist').select('li > a'): #获取下载界面的URL

b = requests.get(url+downppt['href'],headers=headers)

b.encoding = b.apparent_encoding #设置编码类型

soup3 = BeautifulSoup(b.text,'lxml')

downList = soup3.find('ul',class_='downurllist').select('a') #获取下载PPT的URL

pptName = soup3.select('h1') #ppt模板名称

print('Downloading......')

try:

urllib.request.urlretrieve(downList[0]['href'],r'D:\PPT\\'+i['title']+'/'+pptName[0].get_text()+'.rar') #开始下载模板

print(i['title']+'type template download completed the '+str(n)+' few.'+pptName[0].get_text())

n += 1

except:

print(i['title']+'type download failed the '+str(n)+' few.')

n += 1

if __name__ == '__main__':

headers = {'user-agent':UserAgent().random} #定义请求头

getPPT('http://www.1ppt.com')

效果图:

逻辑其实挺简单的,代码也不算复杂。

代码基本都有注释,先一起捋一遍逻辑吧,逻辑搞清楚,代码不在话下。

1、首先网站首页:F12—>选择某个类别(比如科技模板)右击—>检查—>查看右侧的html代码

发现类别的URL保存在

下的 标签里的 标签的 href 属性值中

于是想到用 BeautifulSoup 库的 find() 方法和 select() 方法

2、进入类别界面

同样:F12—>选择某个PPT(例如第一个)右击—>检查—>查看右侧html代码

照葫芦画瓢,继续获取进入下载界面的URL,方法同上

但在此页面需要注意的是,下边有选页标签:

我暂时没有想到准确获取一共有多少页的方式,所以我在此代码中选择用range()函数来假设每个类别都有14页,然后再进行一步判断,看返回的http状态码是否为200。

3、进入具体PPT的下载界面

与上操作相同,获取最终PPT的下载URL

我在此代码中选择用 urllib 库来进行下载,最终将相对应类别的PPT放置同一文件夹中。

文件夹操作我是调用 os 库,具体代码还是往上翻一翻吧。

具体流程就这么几步了,剩下的就是循环 循环 再循环......

循环语句写好,就大功告成了!一起努力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值