相对于其他静态网页常规爬虫,iframe嵌入式导致我们无法直接获取iframe内的数据,因此,我使用了seleinum中的.
switch_to.frame()方法 直接定位到对应的iframe内,便可以直接爬取数据了。
下面我就直接展示全部代码了,主要逻辑思维,我都有注释:
# author:aspiring
from selenium import webdriver
import json
class Music163_Spider:
def __init__(self):
self.start_url = "https://music.163.com/#/discover/toplist" #1.start_url
self.driver = webdriver.Chrome() # 实例化一个浏览器
def get_content_list(self): #3.提取数据
li_list = self.driver.find_elements_by_xpath("//tbody/tr")
content_list = []
for li in li_list:
item = {}
item["num"] = li.find_element_by_xpath(".//span[@class='num']").text
item["songer"] = li.find_element_by_xpath(".//div[@class='text']").get_attribute("title")