Python爬虫之实例---用selenium爬取网易云评论

做题思路

1. 分析源码,确定信息所在位置

2.进行内容解析

3.将获取到的信息字典的方式保存到列表,然后再将列表信息保存到.csv文件中

import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains

'''
https://music.163.com/#/song?id=399354373
目标:评论者的网名,与评论
需要切换iframe
鼠标行为连点击下一页
'''


class WYYmusic:  # 音乐
    # 初始化类
    def __init__(self):
        self.driver = webdriver.Chrome()

        self.driver.get('https://music.163.com/#/song?id=399354373')  # 打开链接
        self.driver.implicitly_wait(3)
        self.driver.switch_to.frame(self.driver.find_element(By.ID, 'g_iframe'))
    # 操作
    def operate(self):
        # 歌评论
        for self.i in range(10):
            self.SongReview = []
            divlist = self.driver.find_elements(By.XPATH, '//*[@class="itm"]/div[2]')
            # print(divlist)
            for item in divlist:
                # print(i)
                # 评论
                try:
                    commentdict = {}
                    comment = item.find_element(By.XPATH, './/div[@class="cnt f-brk"]').text
                    name = comment.split(":")
                    commentdict['name'] = name[0]
                    commentdict['comment'] = name[1]
                    self.SongReview.append(commentdict)
                    # print(comment)
                    # print(name)
                except Exception as e:
                    print()
            self.save()
            # print(SongReview)
            #定位下一页按钮
            button_tag=self.driver.find_element(By.XPATH,'//*[@class="m-cmmt"]/div[3]/div/a[11]')
            action=ActionChains(self.driver)
            action.move_to_element(button_tag)
            action.click()
            action.perform()
        self.driver.quit()

    def save(self):
        if self.i == 0:
            self.mod='w'
        else:
            self.mod="a"
        headers=['name','comment']
        with open('评论.csv',self.mod,encoding='utf-8-sig',newline='')as f:
            writers=csv.DictWriter(f,headers)
            if self.i==0:
                writers.writeheader()
            writers.writerows(self.SongReview)

# 程序主入口
if __name__ == "__main__":
    # 爬虫
    reptile = WYYmusic()
    reptile.operate()

博主B站链接:本座小白TT的个人空间_哔哩哔哩_Bilibili

GitHub链接: GitHub - MeteorPRC/Reptile

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

才短思涩-求解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值