一、准备工作
- 实现环境-Python3
- 程序加速-多进程
- 网页请求-requests库
- 内容匹配-re库
- 网页解析-pyquery库
- 数据存储-MongoDB
二、爬取目标
爬取页面:https://static1.scrape.cuiqingcai.com/
- 使用requests库爬取站点每一页的电影列表,顺着列表爬取每个电影的详情页。
- 用 pyquery 和正则表达式提取每部电影的名称、封面、类别、上映时间、评分、剧情简介等内容。
- 把以上爬取的内容存入 MongoDB 数据库。
- 使用多进程实现爬取的加速。
三、爬取代码及注释
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import requests # 爬取页面
import logging # 输出信息
import re # 实现正则表达式
import pymongo # 存储数据
from pyquery import PyQuery as pq # 解析页面
from urllib.parse import urljoin # URL拼接
import multiprocessing # 多进程
# 定义日志输出级别和格式
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
# 当前站点根URL
BASE_URL = 'https://static1.scrape.cuiqingcai.com'
# 当前站点的页数
TOTAL_PAGE = 10
# 定义MongoDB基本连接信息,如host,port,还可以定义应户名和密码等
MONGO_CONNECTION_STRING = 'mongodb://localhost:27017'
# 数据库名称
MONGO_DB_NAME = 'movies'
# 集合名称
MONGO_COLLECTION_NAME = 'movies'
# 连接客户端
client = pymongo.MongoClient(MONGO_CONNECTION_STRING)
# 创建数据库
db = client['movies']
# 创建文档
collection = db['movies']
# 存储数据到数据库
def save_data(data)</