Python网络爬虫:PPT素材

网页解析主要用到xpath模块对属性进行定位
下载的主要是压缩文件,所以要用二进制格式进行解析和存取
欢迎各位大佬批评指正

import requests
from lxml import etree
import os

#站长素材网站PPT爬取

#获取首页代码
def GetHtmlLText():
    print("第" + str(page) + "页开始爬取:")
    url = "http://sc.chinaz.com/ppt/free_" + str(page) + ".html"
    r = requests.get(url=url, headers=headers)
    r.encoding = r.apparent_encoding  # 获取原始网页编码,防止乱码
    return r.text


# 开始解析
def GiveInfo():
    tree = etree.HTML(Page_text)
    # 获取每一个PPT的详情页url
    href_list = tree.xpath('//div[@class="sc_warp  mt20"]/div/div/div/a/@href')
    # 获取PPT名称
    name = tree.xpath('//div[@class="sc_warp  mt20"]/div/div/div/a/img/@alt')

    # 循环访问每一个PPT详情页
    all_load_url = []
    for i in href_list:
        href_text = requests.get(url=i).text
        t = etree.HTML(href_text)

        # 匹配到下载链接
        if (t.xpath('//div[@class="ppt_left fl"]/div/div[8]/div[2]/ul/li/a/@href') != []):
            load_url = t.xpath('//div[@class="ppt_left fl"]/div/div[8]/div[2]/ul/li/a/@href')[0]
        else:  # 如果匹配不到正确格式,则终止本次操作
            continue
        all_load_url.append(load_url)

    for j in range(len(all_load_url)):
        # 防止有不同格式链接,终止本次爬取
        if all_load_url[j][:4] != 'http':
            continue
        else:
            # 获取资源
            source = requests.get(url=all_load_url[j], headers=headers).content

        # 存储路径
        path = './PPT大全/' + str(name[j]) + '.rar'
        # 持久化存储
        with open(path, 'wb') as fp:
            fp.write(source)
            print(name[j] + " 下载成功!!!")



if __name__=='__main__':
    #在当前项目文件下新建一个文件夹
    if not os.path.exists('./PPT大全'):
        os.mkdir('./PPT大全')

    #UA伪装,模拟成浏览器访问
    headers = {
        'User-Agent': 'Mozilla / 5.0(Windows NT 10.0; Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 85.0.4183.83Safari / 537.36'}

    #实现翻页操作,可自行修改页数
    for page in range(2,600): 
        Page_text=GetHtmlLText()
        GiveInfo()

    print("全部下载成功")

这是程序解析过程:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值