【问题标题】:How to click show more button while scraping from multiple pages?从多个页面抓取时如何单击显示更多按钮?
【发布时间】:2021-12-10 16:09:03
【问题描述】:

我有一个脚本,可以一次从 10 个多页中抓取。

#hyperlink_list is the list of the pages
options = webdriver.ChromeOptions()

driver = webdriver.Chrome(ChromeDriverManager().install(),options=options)
for i in range(0,10):
    url = hyperlink_list[i]
    sleep(randint(10, 24))
    driver.get(url)
    time.sleep(10)
    soup = BeautifulSoup(driver.page_source, 'html.parser')

现在从页面中提取这部分:

仅在某些页面中,show more 链接的描述较长。我想单击此链接,并在show more 链接可用时提取描述。

show more 链接代码:

<a id="rfq-info-header-description-showmorebutton">
              show more
            </a>

我只想在此链接可用时单击此链接,否则将显示 element not found 错误。

【问题讨论】:

  • 提供一个 url 不会有坏处 - 所以每个人都可以复制,谢谢

标签: python selenium web-scraping selenium-chromedriver


【解决方案1】:

使用more = driver.find_element_by_id("rfq-info-header-description-showmorebutton")(假设使用此ID总是可以找到更多链接)。如果没有找到更多按钮,这将引发异常。 (详见here

【讨论】:

    【解决方案2】:

    您应该try-except 阻止,我们应该寻找show more web element。下面我使用find_elements (plural)len() 来获取大小,如果&gt;0 则必须存在网络元素,然后尝试使用显式等待单击它。

    如果 size 不是 &gt;0,则 show more 不可见,我只是在该块中打印一个简单的打印语句。

    代码:

    try:
        if len(driver.find_elements(By.XPATH, "//a[@id='rfq-info-header-description-showmorebutton']")) >0 :
            print("Show more link is available so Selenium bot will click on it.")
            WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, "//a[@id='rfq-info-header-description-showmorebutton']"))).click()
            print('Clicked on show more link')
        else:
            print("Show more link is not available")
    except:
        print('Something else went wrong.')
        pass
    

    进口:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多