[英]Python Selenium Webscraping: find_elements_by_xpath returning an empty list
[英]find_elements_by_xpath returns empty value only on certain lines of code
这是我的第一个问题,所以如果有什么我应该改变的,请告诉我:)
I am trying to use Selenium Webdriver to obtain a list with all the "Unfollow" buttons in a specific GitHub 'Followers' tab https://github.com/toxtli?page=1&tab=followers , using the following code:
from selenium import webdriver
import time
import sys
from importlib import reload
reload(sys)
driver = webdriver.Firefox()
driver.get("http://github.com/login")
username = driver.find_element_by_id("login_field")
password = driver.find_element_by_id("password")
username.send_keys("my_GH_username")
time.sleep(1)
password.send_keys("my_GH_password")
time.sleep(1)
login_form = driver.find_element_by_xpath("//input[@value='Sign in']")
time.sleep(1)
login_form.click()
time.sleep(1)
prepend = ["toxtli"]
for user in prepend:
for t in range(1, 3):
string = "https://github.com/{}?tab=followers&page={}".format(user, t)
driver.get(string)
time.sleep(1)
unfollow_button = driver.find_elements_by_xpath('//*[@value="Unfollow"]')
print(unfollow_button)
time.sleep(1)
driver.close()
但是,无论我尝试什么find_elements_by_xpath function 都会返回一个空列表 [],而我希望在这里找到几个匹配项,例如第 523 行中的匹配项:view-source: https://github.com/toxtli?page=1& =追随者
请注意,如果我尝试使用不同的行,function 似乎可以正常工作,例如替换下面的代码以找到第515 行中的“跨度” :
unfollow_button = driver.find_elements_by_xpath('//*[@class="d-table-cell v-align-middle lh-condensed"]')
为什么会发生这种情况,我该如何解决? 谢谢!
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver_path = './geckodriver' #Firefox Executable path
driver = webdriver.Firefox(executable_path=driver_path)
url = "https://github.com/toxtli?page=1&tab=followers" # tesing only for one url
driver.get(url)
sleep(2)
# It will get all unfollow buttons but we need only the ones which are visable so we can filter it
unfollow_btns = driver.find_elements(By.XPATH, "//form//input[@value='Unfollow' and @type='submit']")
for btn in unfollow_btns:
if btn.is_displayed(): # Checks if unfollow button is displayed
# Do somthing
print("We Found Unfollow Btn")
我尝试了您的代码(感谢您添加登录部分),使用我的用户名/密码,我得到了列表中返回的所有元素。 我不会在这里全部打印出来,但我会在下面展示一些被退回的。 唯一的区别是我使用的是 Chrome,而不是 Firefox。
[<selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="b306a8a3-1b31-4ec3-b7b7-e141cdd5497f")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="1e5d4b03-104f-4af0-9068-3e30ba19dee0")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="567e5d03-6d93-4a01-ac74-1fa7c6e9977f")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="028d8212-80cb-4833-aa38-18b9fcb60ab4")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="89205c40-9f5f-4d97-89da-621633b14276")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="23431ba1-f5ed-41cc-8f1e-e7912e98864a")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="6cf602d9-3f28-4593-aac6-83a8cce5edb4")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="fccbd345-8090-456a-9604-7af8dc853f9d")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="4afec6fe-0193-4b39-b710-c4080380247b")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="0e8f6379-ce1f-4369-9303-f24e1a570ba3")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="81705790-8358-4dbe-a12c-7b56c3938d7a")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="0fe277cb-d52f-48de-9b31-f9a41d4edc78")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="906f27b3-a6a7-4833-9647-b978bb956091")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="303ce9a1-d143-4f9b-b328-1fbd188435e8")>, <selenium.webdriver.remote.webelement.WebElement...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.