Python爬虫-爬取豆瓣高分电影封面

本文是本人最近学习Python爬虫所做的小练习。如有侵权,请联系删除

页面获取url

代码

python 复制代码
import requests
import os
import re

# 创建文件夹
path = os.getcwd() + '/images'
if not os.path.exists(path):
    os.mkdir(path)

# 获取全部数据
def get_data():
    # 地址
    url = "https://movie.douban.com/j/search_subjects"
    # 传参
    params = {
        'type': 'movie',
        'tag': '豆瓣高分',
        'page_limit': 50,
        'page_start': 0
    }
    # 请求头
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url, params=params, headers=headers)
    # json数据格式
    items = response.json()
    # 循环遍历
    for data in items['subjects']:
        # 标题
        title = data.get('title')
        # 封面
        cover = data.get('cover')
        # 下载图片到images文件夹,文件名:title
        if title != '' and cover != '':
            download_image(title, cover)


# 下载图片
def download_image(title, cover):
    # 请求头
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
    }
    res = requests.get(cover, headers=headers)

    # 判断标题是否含有\/:*?"<>|,文件命名不能含有这些,如果有,则用下划线_取代
    new_title = validateTitle(title)
    with open(path + '/' + new_title + '.jpg', mode='wb') as f:
        # 图片内容写入文件
        f.write(res.content)
        print(f"正在下载图片,图片名:{title}.jpg")

# 去除文件中的非法字符(正则表达式)
def validateTitle(title):
    pattern = r"[\\\/\:\*\?\"\<\>\|]"
    new_title = re.sub(pattern, '_', title)
    return new_title

if __name__ == '__main__':
    get_data()

效果

相关推荐
Tairitsu_H2 分钟前
[C++] C++11新增构造:列表初始化和std::initializer_list
开发语言·c++·c++11·构造
宣宣猪的小花园.5 分钟前
【嵌入式】故障与降级:看门狗、保护机制和工程可靠性的底线
开发语言·人工智能·嵌入式硬件·机器学习
shmily麻瓜小菜鸡12 分钟前
JS/TS 易踩坑知识点 — 自动分号插入(ASI)
开发语言·javascript·ecmascript
满怀冰雪15 分钟前
25-迁移学习入门:加载预训练模型并微调
人工智能·python·机器学习·迁移学习·paddle
CoderYanger16 分钟前
前端基础——JavaScript(WebAPI)代码案例
java·开发语言·前端·javascript·css·前端框架·html5
2601_9622845016 分钟前
安卓APP UI自动化测试:Python + UiAutomator2 + pytest + pytest-html
python·pytest·uiautomator2·ui自动化测试·安卓app
geovindu18 分钟前
CSharp: Task Scheduler
开发语言·后端·c#·.net·.netcore
qq_4017004121 分钟前
Qt窗体大小控制从resize到自适应
开发语言·qt
2601_9620780328 分钟前
构建RESTful APIs:使用Python和Flask
python·flask·web开发·api设计·构建restfulapis
半亩码田29 分钟前
C#转Python第4.5篇:单元测试:pytest vs xUnit/NUnit
python·单元测试·c#