爬虫笔记14——爬取网页数据写入MongoDB数据库,以爱奇艺为例

下载MongoDB数据库

首先,需要下载MongoDB数据库,下载的话比较简单,直接去官网找到想要的版本下载即可,具体安装过程可以看这里

pycharm下载pymongo库

python 复制代码
pip install pymongo

然后在在python程序中我们可以这样连接MongoDB数据库:

python 复制代码
import pymongo

#指定数据库与表
# client = pymongo.MongoClient(host='127.0.0.1', port=27017)
# connect = client['table']

client = pymongo.MongoClient(host='127.0.0.1', port=27017)
connect = client['table']['table_info']
# 插入一条数据
info = {'name': 'python', 'age': 18}
result = connect.insert_one(info)
print(result)
# 查询数据
res = connect.find()
print(res)

# 插入多条数据
info_1 = {'name': 'python', 'age': 18}
info_2 = {'name': 'spider', 'age': 18}
result = connect.insert_many([info_1, info_2])
print(result)
res = connect.find()
print(list(res))

了解pymongo的常用语法后,我们来练习爬取爱奇艺的视频数据信息:标题、播放地址、简介并存入MongoDB数据库。

目标地址:https://list.iqiyi.com/www/2/15-------------11-1-1-iqiyi--.html?s_source=PCW_SC

可以先试试,再来看下面的代码:

python 复制代码
# -*- coding: utf-8 -*-
# @Time:      2024/06/22 0:05
# @Author:     马再炜
# @File:       爬取爱奇艺存入MongoDB.py

import requests
import pymongo
import time

# 爬取爱奇艺的视频数据信息:标题、播放地址、简介并存入MongoDB数据库。
class AiQiYi:
    url = "https://pcw-api.iqiyi.com/search/recommend/list"

    def __init__(self):
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
        }
        self.params = {
            "channel_id": "2",
            "data_type": "1",
            "mode": "11",
            "page_id": "2",
            "ret_num": "48",
            "session": "31dd983cf8e6ca3c75b4faaa17d88eac",
            "three_category_id": "15;must"
        }

    def require_info(self):
        response = requests.get(AiQiYi.url, headers=self.headers, params=self.params).json()
        # print(response["data"]["list"])
        return response["data"]["list"]

    def insert_in_mongo(self):
        insertLists = list()
        client = pymongo.MongoClient(host='127.0.0.1', port=27017)
        connect = client['py_spider']['movie_data']
        movieLists = self.require_info()
        # print(movieLists)
        for movie in movieLists:
            insertTemp = dict()
            insertTemp["movie_name"] = movie["name"]
            insertTemp["description"] = movie["description"]
            insertTemp["playUrl"] = movie["payMarkUrl"]
            # insertLists.append({
            #     "movie_name": movie["name"], "description": movie["description"], "playUrl": movie["payMarkUrl"]
            # })
            insertLists.append(insertTemp)
        # print(insertLists)
        connect.insert_many(insertLists)
        # time.sleep(1)
        print('插入完成!')

    def main(self):
        self.insert_in_mongo()


if __name__ == '__main__':
    aiqiyi = AiQiYi()
    aiqiyi.main()

最终结果如图:

相关推荐
方安乐14 分钟前
科普:股票 vs 债券的区别
笔记
m0_4665252921 分钟前
绿盟科技风云卫AI安全能力平台成果重磅发布
大数据·数据库·人工智能·安全
vx_biyesheji000131 分钟前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts
爱学习的阿磊1 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
枷锁—sha1 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
惜分飞1 小时前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
chian-ocean1 小时前
CANN 生态进阶:利用 `profiling-tools` 优化模型性能
数据库·mysql
深蓝电商API1 小时前
爬虫IP封禁后的自动切换与检测机制
爬虫·python
m0_550024631 小时前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
AC赳赳老秦1 小时前
代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
数据库·数据仓库·人工智能·科技·rabbitmq·memcache·deepseek