python 爬虫 / 爬取并下载ppt文件方法 (实战篇)

前言:

先说结果,打个预防针,本文主要是方法

因为网站需要注册才能下载东西,因为不想注册,所以没有下载。(如果要下载,请先登录,然后将cookies加入请求头里)

关于如何跳过登录爬取,我也知道一般是cookies方法,但是这个前提是你登录过才会有转么的cookies(好像也有办法不登录也能爬到,我还没有那么厉害的技术,后续去研究下)

代码步骤

具体的代码步骤和释义都卸载代码里了,不想一步一步截图了

建议每个步骤都去print一下,如果不对劲,重新梳理逻辑,就能找到问题拉

#1.导入模块(第2步放在最下面了)
import requests
from lxml import etree
import os  #这里是生成存储文件夹
if not os.path.exists('D:/PPT'):
    os.mkdir("D:/PPT")

#3.定义函数(开始爬取下载)
def create_request(page):
    #3.1 写入url,请求头,from data(就是页码变化)
    url='https://www.51miz.com/so-ppt/85330'
    headers={
      'User-Agent':'这里写自己电脑的UA'
      #如果你登录过,要下载,cookies写在这里
    }
    data={
        'page_name':page
    }
      # 3.2生成每一页的链接
    urls=url+"/p_"+str(page)+'/'
    request = requests.get ( url=urls, headers=headers, data=data )
    #3.3 获取每页的网页内容
    content=request.text
    #3.4解析每一页内容
    x_page=etree.HTML(content)
    #3.5xpath解析到每个ppt的链接(可以跳转到详细)和ppt名字
    ppt_page_link=x_page.xpath('//div[@class="swe-div"]/a/@href')
    ppt_name = x_page.xpath ( '//div[@class="swe-div"]/a/span//@title')
    #3.6 用字典组对然后遍历 使名字和链接一一对应
    dic=dict(zip(ppt_name,ppt_page_link))
    for ppt_name,ppt_page_link in dic.items(): #注意items不要漏掉
       # 3.6.1 获取每个ppt的详情页面的信息
        page_content=requests.get(url=ppt_page_link,headers=headers).text
       # 3.6.2 解析ppt详情页的信息
        x_load_page=etree.xpath(page_content)
       # 3.6.3 获取下载链接(这个链接就是直接跳转下载,如果下载套娃,那就还要再对下载也买你解析,然后获取最后的下载包)
        ppt_load_link=x_load_page.xpath('//a[@class="iblock center top-scroll-download"]/@href')
       # 3.6.4 建立本地存储路径
        file_path="D:/PPT/"+ppt_name
       # 3.6.5 下载文件
        with open(file_path,"wb") as fp:
            fp.write(ppt_load_link)

#2.封装函数(也可以不用,直接将ab写步骤1 下面

if __name__ == '__main__':a
    end_page=int(input("请输入页码"))#a

    for page in range(1,end_page+1):#b
        create_request(page)

问题:

ValueError: too many values to unpack (expected 2)

这个问题的原因是,字典应用没有加items.

   for ppt_name,ppt_page_link in dic.items(): 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值