1 回答

TA貢獻1831條經(jīng)驗 獲得超10個贊
兩件事情
在獲取頁面源之前需要單擊一個框
您的鏈接是
span
不是div
代碼
import time
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Chrome(executable_path=r'c:\users\aaron\chromedriver.exe')
driver.get('https://couponscorpion.com/marketing/complete-guide-to-pinterest-pinterest-growth-2020/')
time.sleep(5)
driver.find_element_by_xpath('//button[@class="align-right primary slidedown-button"]').click()
content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')
course_link = soup.find_all('span',{'class':"rh_button_wrapper"})
for i in course_link:
link = i.find('a',href=True)
if link is None:
print('No Links Found')
print(link['href'])
輸出
https://couponscorpion.com/scripts/udemy/out.php?go=Q25aTzVXS1l0TXg1TExNZHE5a3pEUEM4SUxUZlBhWEhZWUwwd2FnS3RIVC96cE5lZEpKREdYcUFMSzZZaGlCM0V6RzF1eUE3aVJNaURZTFp5L0tKeVZ4dmRjOTcxN09WbVlKVXhOOGtIY2M9&s=e89c8d0358244e237e0e18df6b3fe872c1c1cd11&n=1298829005&a=0
解釋
總是看看當你這樣做時會發(fā)生什么driver.get(),有時在你可以獲得頁面源之前需要點擊一些框。必須進行所有瀏覽器活動。
這是我們使用 XPATH 選擇器在該框上找到要單擊的元素。
//button[@class="align-right primary slidedown-button"]
這意味著
// - The entire DOM
button - The HTML tag we want
[@class=""] - The HTML tag with class ""
我通常會在訪問元素之前等待一些時間,這個頁面需要一段時間才能加載,而且通常你需要添加一些等待才能獲得你想要的元素或頁面的一部分。
有幾種方法可以做到這一點,這里是使用模塊時間的快速而骯臟的方法。有一些特定的方法可以使用硒來等待元素出現(xiàn)。我實際上嘗試了這些,但無法讓它發(fā)揮作用。
請在文檔中和此處查看值得了解的特定部分。
如果您查看 HTML,您會發(fā)現(xiàn)鏈接位于span類元素后面rh_button_wrapper,而不是 div。
添加回答
舉報