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(): 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是一种功能强大的编程语言,可以用于编写爬虫程序来获取网页上的照片并将其下载到本地图库中。 首先,我们需要使用Python爬虫库(如Requests或Scrapy)发送HTTP请求并获取网页的内容。找到包含照片的元素,通常是<img>标签,并从中提取出照片的URL。 接下来,我们可以使用Python文件操作功能来创建一个本地图库文件夹,并在其中保存下载的照片。可以使用os模块来创建文件夹,然后使用urllib库中的urlretrieve()函数将照片保存到文件夹中。 以下是一个简单的代码示例: ```python import os import requests def download_photos(url, save_path): response = requests.get(url) if response.status_code == 200: # 创建本地图库文件夹 os.makedirs(save_path, exist_ok=True) # 提取照片的文件名 file_name = url.split('/')[-1] save_file_path = os.path.join(save_path, file_name) # 保存照片到本地 with open(save_file_path, 'wb') as f: f.write(response.content) print(f"{url} 下载完成!") # 照片URL photo_url = "http://example.com/photo.jpg" # 图库保存路径 gallery_path = "/path/to/gallery" # 下载照片并保存到图库中 download_photos(photo_url, gallery_path) ``` 通过调用`download_photos()`函数,我们可以将照片下载到指定的本地图库文件夹中。这个函数可以根据需要调用多次,以获取并保存更多的照片。 需要注意的是,爬取照片时应遵守法律法规和网站的规定,确保获取的照片是合法的和被允许使用的。 ### 回答2: Python爬虫是一种可以自动化从网站获取数据的程序。要爬取照片并下载为图库,我们可以使用Python爬虫库如Requests和BeautifulSoup来获取网页内容,并使用正则表达式或XPath来提取图片链接。 首先,我们需要确定要爬取的网站和目标图片的位置。然后,使用Requests库发送HTTP请求,获取网页的HTML源代码。 接下来,使用BeautifulSoup库解析HTML源代码,并根据图片链接的特征使用正则表达式或XPath提取出所有图片链接。然后,可以使用Python的内置模块urllib或第三方库如wget将图片链接保存到本地文件夹。 为了创建一个图库,可以为每个照片创建一个文件名,如根据图片链接或图片特征命名。然后,可以将下载下来的图片保存到图库文件夹中。 如果有多个网页需要爬取,可以使用循环来迭代爬取每个网页,并将所有的图片保存到同一个图库文件夹。 爬取照片并下载为图库的Python程序示例代码如下: ```python import requests import re import os import urllib from bs4 import BeautifulSoup # 创建图库文件夹 if not os.path.exists('图库'): os.makedirs('图库') # 目标网站URL url = 'https://example.com' # 发送HTTP GET请求,获取网页内容 response = requests.get(url) # 解析HTML源代码 soup = BeautifulSoup(response.text, 'html.parser') # 提取图片链接 img_links = soup.find_all('img') # 循环爬取每个图片链接 for img_link in img_links: # 提取图片链接的URL img_url = img_link.get('src') # 下载图片并保存到图库文件夹 urllib.request.urlretrieve(img_url, os.path.join('图库', os.path.basename(img_url))) print('照片爬取完成,已保存到图库文件夹。') ``` 以上代码是一个简单的示例,可以根据需要进行修改和扩展。注意,爬取网站的合法性和尊重隐私是非常重要的。请确保遵守相关法律法规和网站的使用规定。 ### 回答3: Python爬虫是一种自动化程序,可以用来获取网页上的数据。对于照片爬取下载为图库,可以采取以下步骤: 1. 导入必要的库,如requests、beautifulsoup等。这些库可以用来发送HTTP请求、解析HTML等。 2. 使用Python编写爬虫程序,首先需要确定目标网站,并发送HTTP请求获取网页的内容。 3. 使用beautifulsoup库对网页进行解析,找到包含照片的HTML标签或CSS选择器。 4. 通过对爬取到的HTML内容进行解析,提取出照片的URL链接。 5. 使用Python的requests库下载照片,保存到本地图库文件夹中。 6. 可以通过循环迭代来爬取多个页面上的照片。 以下是一个简单的示例代码: ```python import requests from bs4 import BeautifulSoup import os def download_photos(url, save_dir): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') photo_elements = soup.find_all('img') # 根据实际网页结构选择合适的标签或选择器 if not os.path.exists(save_dir): os.makedirs(save_dir) for photo in photo_elements: photo_url = photo['src'] # 获取照片的URL链接 file_name = photo_url.split('/')[-1] # 提取文件名 file_path = os.path.join(save_dir, file_name) # 组装文件路径 # 下载照片 with open(file_path, 'wb') as f: response = requests.get(photo_url) f.write(response.content) if __name__ == '__main__': url = 'https://example.com' # 目标网站的URL save_dir = 'photo_gallery' # 图库保存的目录 download_photos(url, save_dir) ``` 以上代码只是一个简单示例,具体的实现方法还需要根据目标网站的结构和需求进行调整。另外,在爬取网站时要遵循相关法律法规和网站的规定,避免侵犯他人的权益和违反网站的使用条款。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值