前言嗨喽~大家好呀,这里是魔王呐 ❤ ~! 环境使用:
模块使用:
爬虫基本思路:一. 数据来源分析:
二. 代码实现步骤:
代码展示# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests import requests # 导入数据解析模块 --> 第三方模块, 需要安装 pip install parsel import parsel # 导入csv模块 --> 内置模块, 不需要安装 import csv """
你要从事pachong岗位, 这方面工作: <采集的数据量比较大> 天天和反爬打交道了JS逆向,加密 反爬IP被封,账号被封 """
# 0<起始数包含>, 201<末尾数不包含>, 20<步长> for page in range(0, 201, 20): # 请求链接 字符串格式化方法 --> 源码、解答加Q裙:261823976免费领取呐~ url = f'https://movie.****.com/subject/4811774/comments?start={page}&limit=20&status=P&sort=new_score' # 伪装模拟 headers = { # User-Agent 用户代理, 表示浏览器基本身份信息 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 发送请求 response = requests.get(url=url, headers=headers) """
""" # 把获取下来html字符传数据<response.text>, 转换可解析的对象 selector = parsel.Selector(response.text) """
""" # 第一次提取所有内容 divs = selector.css('div.comment-item') # 把列表里面元素一个一个提取出来, for循环遍历 for div in divs: """ 湖南 长沙 .comment-info a::text --> 提取类名为comment-info标签下面a标签里面文本数据 get() --> 获取第一个标签数据, 返回字符串数据类型 attr() --> 获取标签里面属性 """ name = div.css('.comment-info a::text').get() # 昵称 rating = div.css('.rating::attr(title)').get() # 评分 date = div.css('.comment-time ::attr(title)').get() # 日期 area = div.css('.comment-location::text').get() # 归属地 short = div.css('.short::text').get().replace('\n', '') # 评论 count = div.css('.vote-count::text').get() # 有用 # 把数据放到字典里面 dit = { '昵称': name, '评分': rating, '日期': date, '归属地': area, '评论': short, '有用': count, } 源码、解答加Q裙:261823976免费领取呐~ # 写入数据 csv_writer.writerow(dit) print(name, rating, date, area, short, count) 创建文件对象 f = open('影评.csv', mode='a', encoding='utf-8-sig', newline='') # f 文件对象 fieldnames 表头/字段名 csv_writer = csv.DictWriter(f, fieldnames=[ '昵称', '评分', '日期', '归属地', '评论', '有用', ]) # 写入表头 csv_writer.writeheader() 绘制词云图模块导入 # 导入结巴模块 --> 第三方模块, 需要安装 pip install jieba import jieba # 导入pandas --> 第三方模块, 需要安装 pip install pandas import pandas as pd # 导入词云模块 --> 第三方模块, 需要安装 pip install wordcloud import wordcloud 读取csv表格里面数据内容 df = pd.read_csv('影评.csv') 获取评论内容 content_list = df['评论'].to_list() # 把列表转成字符串 content = ''.join(content_list) # 进行分词处理 string = ' '.join(jieba.lcut(content)) 词云图配置 wc = wordcloud.WordCloud( width=1000, # 宽 height=700, # 高 源码、解答加Q裙:261823976免费领取呐~ background_color='white', # 背景颜色 font_path='msyh.ttc', # 设置字体 stopwords={'了', '的', '是', '我', '在', '和'}, scale=15 ) # 传入文字内容 wc.generate(string) # 输出词云图 wc.to_file('词云图.png') print(string) 尾语 💝要成功,先发疯,下定决心往前冲! 学习是需要长期坚持的,一步一个脚印地走向未来! 未来的你一定会感谢今天学习的你。 —— 心灵鸡汤 本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝 |
|