2017-05-05 74 views
-2

您好我正在尝试从网页中删除所有链接。我使用硒webdriver滚动和点击加载更多按钮目前在网页上。而我试图代码如下所示:错误,同时从网页上刮取链接

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.common.exceptions import ElementNotVisibleException 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import NoSuchElementException 
from bs4 import BeautifulSoup 

def fetch_links(url): 
    chrome_path = r"D:\nishant_pc_d_drive\nishant_pc\d_drive\update_engine\myntra_update\chromedriver.exe" 
    driver = webdriver.Chrome(chrome_path) 
    driver.get(url) 

    while True: 
     try: 
      scrollcount=1 
      while scrollcount<5: 
       driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
       WebDriverWait(driver, 5) 
       scrollcount+=1 

      WebDriverWait(driver, 10).until(EC.presence_of_element_located(driver.find_elements_by_css_selector('.load_more .sbt-button, .load_more_order .sbt-button'))) 
      driver.find_element_by_id("loadmore").click() 
     except (ElementNotVisibleException,NoSuchElementException) as e: 
      print "done" 

    x = driver.page_source 
    soup2 = BeautifulSoup(x, 'html.parser') 
    linkcount=0 
    for each in soup2.find_all('a',attrs={"class":"thumb searchUrlClass"}): 
     print "https://www.shoppersstop.com/"+each.get('href') 
     linkcount+=1 
    print linkcount 

# thumb searchUrlClass 

fetch_links("https://www.shoppersstop.com/women-westernwear-tops-tees/c-A206020") 

但不幸的是它给我的错误,如下图所示:

Traceback (most recent call last): 
    File "D:/INVENTORY/shopperstop/fetch_link.py", line 36, in <module> 
    fetch_links("https://www.shoppersstop.com/women-westernwear-tops-tees/c-A206020") 
    File "D:/INVENTORY/shopperstop/fetch_link.py", line 21, in fetch_links 
    WebDriverWait(driver, 10).until(EC.presence_of_element_located(driver.find_element_by_class_name('sbt-button'))) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\support\wait.py", line 71, in until 
    value = method(self._driver) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 63, in __call__ 
    return _find_element(driver, self.locator) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 328, in _find_element 
    return driver.find_element(*by) 
TypeError: find_element() argument after * must be an iterable, not WebElement 

如何删除此错误。谢谢!

+0

这是整个代码? – Exprator

+0

没有错误是因为硒。所以刚刚发布该部分只有 –

+0

这里没有错误。 find_element()这是什么东西。出现错误 – Exprator

回答

1
from selenium.webdriver.common.by import By 

element = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((By.ID, "myDynamicElement")) 
    ) 
+0

SO上不允许输入代码。请花一分钟来总结一下你的代码的作用以及它如何回答这个问题。 – JeffC