亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解析鏈接時無法繼續點擊下一頁按鈕

解析鏈接時無法繼續點擊下一頁按鈕

一只斗牛犬 2021-11-16 16:53:23
我已經在 python 中結合 selenium 編寫了一個腳本來單擊search按鈕以填充結果,然后ya_result-item從其登錄頁面解析類中的不同鏈接,然后繼續單擊下一頁按鈕,同時解析來自其他頁面的鏈接,直到有沒有更多的按鈕可以點擊。但是,我的腳本只能從它的第一頁解析鏈接,然后單擊下一頁按鈕一次,但隨后卡住了。如何讓我的腳本在解析鏈接時一直點擊下一頁按鈕?這是我的嘗試:from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECurl = "https://www.yogaalliance.org/Directory?Type=School"def get_page_content(driver,link):    driver.get(link)    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.ya_directory-search-button"))).click()    while True:        for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "[id^='ya_result-item'] a[href^='/SchoolPublicProfile']"))):            print(item.get_attribute("href"))        try:            wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[title*='next page']"))).click()            wait.until(EC.staleness_of(item))        except Exception:breakif __name__ == '__main__':    driver = webdriver.Chrome()    wait = WebDriverWait(driver,10)    get_page_content(driver,url)
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

我打印出異常,它說元素不可點擊。除了點擊它,另一種方法是使用send_keys("\n")模擬鏈接點擊。

wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[title*='next page']"))).send_keys("\n")

我試過了,我能夠導航到所有頁面。


查看完整回答
反對 回復 2021-11-16
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

如果您想抓取數據,則不需要 Selenium。您可以使用requestspackage 更快地獲取 json 格式的所有信息。


下面的代碼收集所有學校的詳細信息作為地圖列表result:


import requests


data = {

    'take': '10',

    'skip': '0',

    'page': '1',

    'pageSize': '10',

    'pageIndex': '0'

}

url = 'https://www.yogaalliance.org/DesktopModules/YAServices/API/SchoolDirectory/SearchSchools'

response = requests.post(url, data=data)


result = response.json()["Result"]

totalCount = response.json()["TotalCount"]

totalCount = int(totalCount / 10)


for i in range(1, totalCount):

    data['skip'] = int(data['skip']) + 10

    data['page'] = i + 1

    data['pageIndex'] = i

    response = requests.post(url, data=data)

    result.extend(response.json()["Result"])


print(result)


查看完整回答
反對 回復 2021-11-16
  • 2 回答
  • 0 關注
  • 273 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號