【发布时间】:2020-03-20 06:13:14
【问题描述】:
我想打印 Instagram 关注者列表中的关注者姓名列表。但它只会向下滚动并且不会在控制台中打印超过 7 个关注者的名字。这是我的代码:
def another_user_followers(browser, acc_username, no_of_followers_to_follow):
signIn(browser)
search_box = WebDriverWait(browser, 10).until(
EC.visibility_of_element_located(
(By.XPATH, "/html/body/div[1]/section/nav/div[2]/div/div/div[2]/input")
)
)
search_box.send_keys(acc_username)
time.sleep(1)
search_box.send_keys(Keys.ENTER)
time.sleep(1)
search_box.send_keys(Keys.ENTER)
time.sleep(2)
try:
browser.find_element_by_css_selector(
"#react-root > section > main > div > header > section > ul > li:nth-child(2) > a").click()
except:
print("This Account is Private or It is a Tag")
browser.find_element_by_xpath("/html/body/div[1]/section/nav/div[2]/div/div/div[1]/a/div/div").click()
sys.exit()
time.sleep(2)
browser.find_element_by_xpath("/html/body/div[4]/div/div[1]/div/div[2]/button").click()
time.sleep(2)
browser.find_element_by_css_selector(
"#react-root > section > main > div > header > section > ul > li:nth-child(2) > a").click()
for i in range(1, no_of_followers_to_follow):
followers_list = []
str1 = "/html/body/div[4]/div/div[2]/ul/div/li["
str2 = "]/div/div[3]"
final_string = str1 + str(i) + str2
a = browser.find_element_by_xpath(final_string)
if i % 6 == 0:
followedPopup = browser.find_element_by_xpath("//div[@class='isgrP']")
browser.execute_script('arguments[0].scrollTop = arguments[0].scrollTop + arguments[0].offsetHeight;',followedPopup)
time.sleep(1)
followers_list.append(a.text)
time.sleep(1)
print(followers_list)
else:
followers_list.append(a.text)
time.sleep(1)
print(followers_list)
这是错误信息:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[4]/div/div[2]/ul/div/li[7]/div/div[3]"}
(会话信息:chrome=80.0.3987.149)
我的代码有什么问题?我希望在控制台中打印 100 个关注者。但它只打印 6 个名字
【问题讨论】:
-
使用
css selectors而不是XPATH,因为css选择器会返回准确的结果,但是当你向下滚动页面时XPATH会发生变化。如果您不相信我,请手动检查页面的 XPATH。
标签: python web-scraping scroll instagram