# 返送请求 def mainPage(self): time.sleep(5) iframe=self.driver.find_element(By.ID, 'g_iframe') self.driver.switch_to.frame(iframe) # 直接拉到底 self.driver.execute_script('window.scrollTo(0,document.body.scrollHeight)') # 得到的是内存地址,但可以使用xpath索引,要看内容的话使用etree.tostring(html).decode('utf-8') html = etree.HTML(self.driver.page_source) # result = etree.tostring(html).decode('utf-8') urls = html.xpath('//div/span[@class="txt"]/a/@href') # print(urls) cnt = 1 for url in urls: time.sleep(10) self.driver.get(f"https://music.163.com/#{url}") iframe = self.driver.find_element(By.ID, 'g_iframe') self.driver.switch_to.frame(iframe) self.song_comments() # print(f'//div/span/a[@href={url}]') # self.driver.find_element(By.XPATH, f'//div/span/a[@href="{url}"]').click() print(f"第{cnt}采集完毕!!!") cnt += 1 self.fo.close()
时间: 2024-03-18 22:43:16 浏览: 215
Silverlight五子棋.doc
这段代码是一个Python脚本中的一个方法,主要作用是在网易云音乐中爬取歌曲评论数据。主要思路如下:
1. 首先等待5秒钟,等待页面加载完成。
2. 定位到页面中的一个iframe,然后切换到该iframe中。
3. 使用Javascript语句将页面滚动到底部,以便加载更多内容。
4. 将页面源代码转换成HTML对象,使用XPath表达式定位到所有的歌曲链接地址。
5. 遍历所有的链接地址,进入每个歌曲的评论页面。
6. 定位到评论页面中的另一个iframe,然后切换到该iframe中。
7. 调用`song_comments()`方法,该方法用于爬取歌曲的评论数据。
8. 最后输出采集完毕的提示信息,并关闭文件。
需要注意的是,该方法中使用了较多的等待时间,以确保页面加载完成。此外,该方法需要使用`etree`模块解析HTML源代码,并使用`xpath`表达式定位元素。
阅读全文