前言
大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

本次案例涉及点:
1、动态数据抓包演示
2、csv文件保存
3、requests模块的使用
4、parsel解析数据的使用
环境介绍:
软件安装
-  
python 3.8
 -  
pycharm
 
不会安装的可以文末名片+我获取哦 😎
模块使用
内置模块
- csv
 
第三方模块(需安装)
-  
requests >>> pip install requests
 -  
parsel >>> pip install parsel
 
win + R 输入cmd 输入安装命令 pip install 模块名
如果出现爆红 可能是因为 网络连接超时 切换国内镜像源
写代码代码基本步骤:
-  
发送请求, 确定url地址 然后对其发送请求
 -  
获取数据, 获取服务器返回的响应数据内容
 -  
解析数据, 提取我们想要内容
 -  
保存数据
 -  
多页数据爬取
 
代码展示:
导入模块:
import requests  # 数据请求模块 第三方模块 pip install requests
import parsel  # 数据解析模块 第三方模块 pip install parsel
import csv
import time # 时间模块
 
- 保存数据
 
f = open('豆Top250.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '导演',
    '演员',
    '电影年份',
    '拍摄国家',
    '电影类型',
    '电影评分',
    '评论人数',
    '电影简介',
])
csv_writer.writeheader()
num = 1
 
- 多页获取
 
for page in range(0, 250, 25):
    print(f'正在爬取第{num}页数据内容')
    num += 1
    time.sleep(1)
 
- 发送请求, 确定url地址 然后对其发送请求
 
    url = f'https://*****top250?start={page}&filter='
    # User-Agent 浏览器的基本标识 基本信息 headers请求头 主要是把python代码进行伪装
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
 
- 获取数据, 获取服务器返回的响应数据内容
 
# print(response.text) # response.text 获取响应体的文本数据 字符串数据类型  >>> re正则表达式
 
-  
解析数据, 提取我们想要内容
解析数据方法: re正则表达式 / xpath / css选择器
parsel解析模块里面css选择器
把获取到的html字符串数据类型进行转换
 
    selector = parsel.Selector(response.text)
    # css选择器 主要根据标签属性内容提取数据
    lis = selector.css('.grid_view li')  # 获取所有li标签 返回的数据 列表, 列表里面没一个元素都是selector对象
    for li in lis:
        title = li.css('.info .hd span.title:nth-child(1)::text').get()  # 电影的名字
        movie_info_list = li.css('.bd p:nth-child(1)::text').getall()  # 电影的信息
        # getall 返回的是列表 strip() 去除字符串左右两端空格
        actor_list = movie_info_list[0].strip().split('   ')
        if len(actor_list) > 1:
            actor_1 = actor_list[0].replace('导演: ', '')  # 导演
            actor_2 = actor_list[1].replace('主演: ', '').replace('/...', '')  # 主演
            movie_info = movie_info_list[1].strip().split(' / ')
            movie_year = movie_info[0]  # 电影的年份
            movie_country = movie_info[1]  # 电影的国家
            movie_type = movie_info[2]  # 电影的类型
            movie_sum = li.css('.inq::text').get()  # 电影简介
            movie_num = li.css('.rating_num::text').get()  # 电影评分
            comment = li.css('.star span:nth-child(4)::text').get().replace('人评价', '')  # 评论人数
        else:
            actor_1 = actor_list[0]
            actor_2 = 'None'
        dit = {
            '标题': title,
            '导演': actor_1,
            '演员': actor_2,
            '电影年份': movie_year,
            '拍摄国家': movie_country,
            '电影类型': movie_type,
            '电影评分': movie_num,
            '评论人数': comment,
            '电影简介': movie_sum,
        }
        csv_writer.writerow(dit)
        print(title, actor_1, actor_2, movie_year, movie_country, movie_type, movie_sum, movie_num, comment, sep='|')
 
尾语 💝
好了,今天的分享就差不多到这里了!
完整代码、更多资源、疑惑解答直接点击下方名片自取即可。
对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!



















