如何使用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下载微博上的图片和视频的方法,示例代码已经提供,你可以根据自己的需求进行修改和扩展。
