我正在尝试抓取instagram页面,以获取每个帖子的评论和喜欢的次数。我可以得到将鼠标放在照片上的值,但问题是instagram限制了它显示的帖子的div数量。 Selenium的move_to_element穿过目标div之前的所有div。因此,如果向下滚动配置文件以获取更多帖子,则包含第一个帖子的div消失并且selenium返回错误。我不知道该错误是否是因为它无法找到第一个元素div或返回至顶部以再次传递所有div时是否找不到目标div。
这是遍历div的循环:
while True:
divs = http.find_elements_by_xpath(
'//*[@id="react-root"]/section/main/div/div[2]/article/div[1]/div/div/div')
for div in divs:
try:
action.move_to_element(div).perform()
except Exception as e:
print(e)
continue
http.execute_script(
"window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;")
if http.find_elements_by_xpath('//*[@id="react-root"]/section/main/div/div[3]/article/div[2]/div') != []:
break
这是错误:
Message: stale element reference: element is not attached to the page document (Session info: chrome=68.0.3440.75)(Driver info: chromedriver=2.40.565383(76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.13.0-45-generic x86_64)