簡體   English   中英

使用python在網頁上單擊“加載更多”

[英]Clicking “Load More” on webpages by using python

我正在嘗試加載此鏈接的全部內容(點擊المزيد)

在這里嘗試了很多這樣的教程,教會如何使用類似的問題(無限滾動頁面)。

我的問題是我無法在此頁面上指定加載更多類來單擊它。 但是,如果我沒有弄錯的話,它存在於網頁源代碼的這一部分:

<ng-include src="'loader.html'" class="ng-scope">
    <div class="loading-div ng-scope ng-hide" ng-show="!loadingMoreData">
        <div class="spinner">
            <div class="bounce1"></div>
            <div class="bounce2"></div>
            <div class="bounce3"></div>
        </div>
    </div>
</ng-include>
<div class="block-hed block-link clearfix" data-ng-show="isMoreDisplayed" data-ng-click="getMoreMaterials()">
                    <h4 class="link-border-color"><a href="javascript:void(0)">المزيد </a></h4>
                </div>

我不一定需要實現“click()”或“perform()”之類的任何功能。 任何方式來顯示加載下的整個內容更多按鈕被考慮。


順便說一句,這是我的代碼到目前為止:

from selenium import webdriver
browser = webdriver.Chrome("/home/aziz/anaconda3/lib/python3.6/site-packages/chromedriver/chromedriver")
am = browser.get("https://sabq.org/%D8%A7%D9%84%D9%85%D9%85%D9%84%D9%83%D8%A9/%D8%A5%D9%82%D8%AA%D8%B5%D8%A7%D8%AF")

更新我在這里使用此鏈接來解決問題,但沒有一個教程工作。

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

我終於設法解決了這個問題。 我剛剛在我的代碼之后添加了這一行

while True:
    browser.find_elements_by_link_text('المزيد')[1].click()

頁面開始無限加載所有文章。 我真的不知道المزيد本身是可點擊的。 我認為其中包含一個鏈接。

正確/更好的方法是使用WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
while True:
  element = wait.until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, 'المزيد')))
  element.click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM