मैं https://www से सभी लेखों के hrefs और शीर्षकों को पार्स करने का प्रयास कर रहा हूं। weforum.org/agenda/archive/covid-19 लेकिन मैं अगले पेज पर जानकारी भी खींचना चाहता हूं।

मेरा कोड केवल वर्तमान पृष्ठ को खींच सकता है लेकिन अगले पृष्ठ पर क्लिक () पर काम नहीं कर रहा है।

driver.get("https://www.weforum.org/agenda/archive/covid-19")

links =[]
titles = []

while True:
    for elem in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.tout__link'))):
        links.append(elem.get_attribute('href'))
        titles.append(elem.text)
    try:
        WebDriverWait(driver,5).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".pagination__nav-text"))).click()
        WebDriverWait(driver,5).until(EC.staleness_of(elem))
    except:
        break

क्या कोई इस मुद्दे पर मेरी मदद कर सकता है? धन्यवाद!

2
Bangbangbang 17 अप्रैल 2020, 21:44

1 उत्तर

सबसे बढ़िया उत्तर

वर्ग का नाम 'pagination__nav-text' अद्वितीय नहीं है। डिजाइन के अनुसार, यह पहले पाए गए तत्व पर क्लिक करता है जो "पिछला" लिंक है। तो आप उसे काम करते हुए नहीं देखेंगे।

क्या आप इस दृष्टिकोण के साथ प्रयास कर सकते हैं,

    driver.get("https://www.weforum.org/agenda/archive/covid-19")
wait = WebDriverWait(driver,10)

links =[]
titles = []

while True:
    for elem in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.tout__link'))):
        links.append(elem.get_attribute('href'))
        titles.append(elem.text)
    try:
        print('trying to click next')
        WebDriverWait(driver,5).until(EC.presence_of_element_located((By.XPATH,"//div[@class='pagination__nav-text' and contains(text(),'Next')]"))).click()
        WebDriverWait(driver,5).until(EC.staleness_of(elem))
    except:
        break


print(links)   
print(titles)
driver.quit()
3
Sureshmani 17 अप्रैल 2020, 19:17