在使用selenium爬取数据的时候,使用了find_elements嵌套提取的时候遇到了问题
任务是提取下面网站上所有电影的名字(有CSS位置偏移)
browser = webdriver.Chrome()
browser.get("https://antispider3.scrape.center/")
div_list = browser.find_elements(By.XPATH, '//div[@id="index"]/div//div[@class="el-row"][1]/div')
# 提取了这个网站上这一页18个电影信息的要素
测试了一下,提取第二个电影的名字(虽然有偏移)是没问题的。
print(div_list[1].text) # 提取第二个电影的名字
#清
#风
#家
#白
然而对div_list再进行find_elements的时候,提取出来的不是一部电影的名字,而是全部电影的名字:
print([a.text for a in div_list[1].find_elements(By.XPATH, "//h3/span")] # 再利用find_elements定位span标签
# ['Wonder', '风\n家\n白\n清', '法\n老\n的\n宠\n妃', '士\n为\n知\n己\n(', '年\n些\n我\n那\n,', '非\n我\n倾\n城\n(', '些\n事\n朝\n明\n那', '笑\n........]
为什么对'selenium.webdriver.remote.webelement.WebElement'再进行find_elements,查找到的是全部元素而不是需要定位的父元素下的子元素呢?