python selenium 模拟浏览器进行爬取B站评论

直接上代码,selenium比较无脑。
日后有空再补充
ps:记得装好驱动噢,不行的话可以留言,我私发驱动给你~

from selenium import webdriver
from time import  sleep
l1=[]
print("请输入av号:")
av=input()
from selenium.common.exceptions import NoSuchElementException  #防止错误

def pa(): #定义函数,进行爬取
    list = driver.find_elements_by_css_selector(
        '#comment > div > div.comment > div.bb-comment > div.comment-list > div > div.con > p')
    for i in list:
        l1.append(i.text)

url = 'https://www.bilibili.com/video/av'+av
chrome_path = "D:\Google\chromedriver.exe" #驱动的路径
driver = webdriver.Chrome(executable_path=chrome_path)
driver.get(url)
sleep(10)
driver.execute_script('window.scrollBy(0,document.body.scrollHeight)')
sleep(1.5)#页面滚动到底部
driver.execute_script('window.scrollBy(0,1000)')
sleep(1.5)
#等待网络
sleep(10)
pa()
while (1):
    try:
        c =driver.find_element_by_css_selector("#comment > div > div.comment > div.bb-comment > div.bottom-page.paging-box-big > a.next")
        #print(c)
        c.click()#模拟点击下一页,当没有下一页的时候就会进行下面一个操作
        sleep(5)
        pa()
        sleep(0.5)
    except NoSuchElementException as e:
        print("没")
        break
for i in l1:
    print(i)
  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
由于QQ音乐需要登录才能进行爬取,因此我们需要使用Selenium模拟浏览器操作,先登录QQ音乐,再进行爬取。 首先,我们需要安装SeleniumChromeDriver。Selenium可以通过pip安装,ChromeDriver需要从官网下载对应版本的驱动。 安装完成后,我们就可以开始编写代码了。下面是完整的代码: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # 设置ChromeDriver路径 path = 'C:/chromedriver.exe' # 创建浏览器对象 browser = webdriver.Chrome(path) # 打开QQ音乐网站 browser.get('https://y.qq.com/') # 点击登录按钮 login_btn = browser.find_element_by_link_text('登录') login_btn.click() # 切换到iframe中 iframe = browser.find_element_by_id('login_frame') browser.switch_to.frame(iframe) # 点击QQ登录按钮 qq_login_btn = browser.find_element_by_id('switcher_plogin') qq_login_btn.click() # 输入QQ号和密码 qq_input = browser.find_element_by_id('u') qq_input.send_keys('your_qq_number') password_input = browser.find_element_by_id('p') password_input.send_keys('your_password') # 点击登录按钮 submit_btn = browser.find_element_by_id('login_button') submit_btn.click() # 等待登录成功并跳转到个人中心页面 time.sleep(10) # 获取歌手页面 singer_url = 'https://y.qq.com/n/yqq/singer/001fNHEf1SFEFN.html' browser.get(singer_url) # 获取歌曲列表 song_list = browser.find_elements_by_css_selector('.songlist__list .js_song') for i in range(5): # 点击歌曲 song_list[i].click() # 切换到歌曲iframe中 song_iframe = browser.find_element_by_id('frameMusic') browser.switch_to.frame(song_iframe) # 获取歌曲信息 song_name = browser.find_element_by_css_selector('.data__name_txt').text song_genre = browser.find_element_by_css_selector('.data__singer').text.split('/')[1].strip() song_release_time = browser.find_element_by_css_selector('.data__album').text.split('/')[1].strip() # 获取评论 comment_btn = browser.find_element_by_css_selector('.mod_tab__tab .js_tab:nth-child(2)') comment_btn.click() time.sleep(2) comment_list = [] while len(comment_list) < 500: # 获取评论列表 comments = browser.find_elements_by_css_selector('.js_commentlist .js_cmt_li') for comment in comments: comment_time = comment.find_element_by_css_selector('.js_cmt_time').text comment_like = comment.find_element_by_css_selector('.js_cmt_like').text comment_content = comment.find_element_by_css_selector('.js_cmt_content').text comment_list.append((comment_time, comment_like, comment_content)) # 点击下一页 next_btn = browser.find_element_by_css_selector('.js_get_more_hot a') next_btn.click() time.sleep(2) # 输出歌曲信息和评论 print('歌曲名称:', song_name) print('流派:', song_genre) print('发行时间:', song_release_time) print('评论数:', len(comment_list)) for comment in comment_list: print('评论时间:', comment[0]) print('点赞次数:', comment[1]) print('评论内容:', comment[2]) print('-------------------------------') # 返回歌手页面 browser.switch_to.default_content() back_btn = browser.find_element_by_css_selector('.top__back') back_btn.click() time.sleep(2) # 关闭浏览器 browser.quit() ``` 首先,我们打开QQ音乐网站并点击登录按钮。由于登录弹窗是一个iframe,因此需要先切换到iframe中,再进行登录操作。 登录成功后,我们跳转到某位歌手的页面,并获取歌曲列表。我们只需要获取前5首歌曲的信息和评论。 对于每首歌曲,我们先点击进入歌曲页面,再切换到歌曲iframe中。我们可以通过CSS选择器获取歌曲的名称、流派和发行时间。然后我们需要获取歌曲的评论,由于一页只能显示20条评论,因此需要不断点击下一页,直到获取到500条评论为止。对于每条评论,我们可以通过CSS选择器获取评论的时间、点赞次数和内容,将其存储在一个列表中。 最后,我们输出歌曲信息和评论,然后返回歌手页面,进行下一首歌曲的爬取。 注意:由于QQ音乐的反虫机制较为严格,如果爬取速度过快或者爬取的数据量过大,可能会触发反虫机制而导致爬取失败。因此,我们需要注意控制爬取速度和数据量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小生凡一

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

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

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

打赏作者

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

抵扣说明:

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

余额充值