音乐的评论相对来说有一丢丢困难,主要在于它嵌套的循环多一点,还多了个翻页,下面详细介绍:
思路:
1:由于评论的页数随着评论数目在不断增加,首先要匹配而歌曲总的页数
2:然后将页数作为for循环的最大循环次数,每循环一次都要翻页一次(模拟点击)
3:匹配出评论内容,并且写进去数据库
4:控制最外层循环就是循环歌曲的id,把匹配评论这部分内容打包成类,然后创建一个browser全局变量作为参数传进去
导入使用的模块:
from lxml import html
import time
from selenium import webdriver
import re
import csv
import pymysql
class Demo:
comment_list = [] # 定义评论列表文件
writer_list = [] # 定义评论者列表
# 写入数据库
conn = pymysql.connect(host='localhost' ,user = 'root',passwd = '123456',db= 'wyy' ,charset = 'utf8mb4')
curs = conn.cursor()
创建一个构造方法,将全局变量browser和url作为参数,保证在切换歌曲url的时候保持原来的浏览器窗口不变。浏览器等待的时间我是慢慢试出来的,如果时间过短的话网页加载不完,会抛错找不到contentFrame,在尝试的时候肯定是时间越短越好。
def __init__(self,browser,url):
self.browser = browser
time.sleep(2)
self.browser.get(url)
self.browser.implicitly_wait(65)
try:
self.browser.switch_to.frame('contentFrame') # 进入frame
except Exception as e:
print(e)