欢迎访问宙启技术站
智能推送

如何使用python下载Weibo上的图片和视频

发布时间:2023-12-16 01:04:08

要在Python中下载微博上的图片和视频,可以使用如下的步骤:

1. 安装依赖库

首先,你需要安装requests和beautifulsoup4两个库。这两个库可以通过pip命令进行安装:

pip install requests
pip install beautifulsoup4

2. 导入所需的库

在代码文件的开头,导入requests、beautifulsoup和os库:

import requests
from bs4 import BeautifulSoup
import os

3. 获取微博页面的HTML内容

编写一个函数,用于获取微博页面的HTML内容。该函数接收一个微博的URL作为参数,并返回该页面的HTML内容。可以使用requests库的get方法来发送HTTP GET请求,并使用response对象的content属性来获取响应的内容:

def get_html(url):
    response = requests.get(url)
    return response.content

4. 解析HTML内容

编写一个函数,用于解析微博页面的HTML内容,并获取其中的图片和视频链接。该函数接收一个HTML内容作为参数,并返回一个包含图片和视频链接的列表。可以使用beautifulsoup库的find_all方法来查找特定的HTML标签,并使用标签对象的get方法来获取属性的值:

def parse_html(html):
    soup = BeautifulSoup(html, 'html.parser')
    links = []
    
    # 查找所有的图片链接
    img_links = soup.find_all('img', class_='m-img')
    for link in img_links:
        links.append(link.get('src'))
    
    # 查找所有的视频链接
    video_links = soup.find_all('video')
    for link in video_links:
        links.append(link.get('src'))
    
    return links

5. 下载图片和视频

编写一个函数,用于下载图片和视频。该函数接收一个链接和保存路径作为参数,并使用requests库的get方法来下载文件,并使用文件对象的write方法将内容保存到本地:

def download_file(url, save_path):
    response = requests.get(url, stream=True)
    with open(save_path, 'wb') as file:
        for chunk in response.iter_content(chunk_size=128):
            file.write(chunk)

6. 完整示例

下面是一个完整的示例代码,演示如何使用上述函数来下载微博上的图片和视频:

import requests
from bs4 import BeautifulSoup
import os

def get_html(url):
    response = requests.get(url)
    return response.content

def parse_html(html):
    soup = BeautifulSoup(html, 'html.parser')
    links = []
    
    img_links = soup.find_all('img', class_='m-img')
    for link in img_links:
        links.append(link.get('src'))
    
    video_links = soup.find_all('video')
    for link in video_links:
        links.append(link.get('src'))
    
    return links

def download_file(url, save_path):
    response = requests.get(url, stream=True)
    with open(save_path, 'wb') as file:
        for chunk in response.iter_content(chunk_size=128):
            file.write(chunk)

# 示例代码
weibo_url = 'https://weibo.com'
html = get_html(weibo_url)
links = parse_html(html)

save_dir = 'weibo_files'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)

for link in links:
    filename = link.split('/')[-1]
    save_path = os.path.join(save_dir, filename)
    download_file(link, save_path)
    print(f'Downloaded: {save_path}')

在以上的示例中,我们首先获取微博首页的HTML内容,然后解析该内容获取图片和视频的链接。接下来,我们创建一个保存文件的目录,并遍历链接列表,使用下载函数来下载文件并保存到本地。最后,我们打印下载完成的文件路径。

综上所述,这就是使用Python下载微博上的图片和视频的方法,示例代码已经提供,你可以根据自己的需求进行修改和扩展。