Python学习:使用selenium爬取某个网站时出现的问题

最近,学习Python爬虫兴奋之时,突发奇想想去爬取网易云音乐的评论,根据所学,先找到评论定位的CSS选择器,然后什么也没有输出,又仔细检查了一下没有任何问题,后来一遍一遍查询资料发现,原来网页中有frame或者iframe时,需要在定位器的前面加这么一句:

web.switch_to.frame(frame标志) # frame标志可以是name,id,class的值

这样再接着往下写就可以满足了,代码如下:

import time
from selenium.webdriver import Chrome
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
web=Chrome()
web.get("https://music.163.com/#/song?id=1997437579")
time.sleep(1)
#这行非常重要,相当于在frame内部重新又嵌套了一个新的html文件,所以要用这行去转换到新的html文件内
web.switch_to.frame('g_iframe')
#到音乐列表
#music_list=web.find_elements(By.CSS_SELECTOR,'tbody tr b')  #采用css选择器来定位的
music_list=web.find_elements(By.CSS_SELECTOR,'.n-cmt .cmmts .cntwrap .cnt')
f=open('网易云评论.txt','w',encoding='utf-8')
for music in music_list:
    abs=music.get_attribute('innerHTML').replace('&nbsp','').replace(' ','').replace('r&b','').split('>:')[-1].split('>;')[-1].split('">')[-1].strip()
    f.write(abs)
    f.write('\n')
    # b=music.find_element(By.XPATH,'./td[2]/div/div/div/span/a/b')
    # b.find_element(By.XPATH,'//*[@id="19974375791671691746446"]/td[2]/div/div/div/span/a/b/div')
    # print(b.text)
f.close()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值