2015-10-02 41 views
0

新手在這裏。我試圖打印網站上每個'p'標籤中包含的所有文本。這是不起作用的代碼:Python/Selenium - 無法打印所有段落的文字內容

from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get('https://automatetheboringstuff.com/') 
elem = browser.find_elements_by_css_selector('p') 
print(elem.text) 

我學習,我走了,所以我想看看,我刮的內容,所以我知道一切都很好,轉向更高級的主題了。老師說:「所有網頁元素,有」的.text」的方法,但似乎並沒有工作,當我嘗試打印錯誤消息:

C:\Python34\python.exe C:/Users/sk/PycharmProjects/test/temperase.py 
Traceback (most recent call last): 
    File "C:/Users/sk/PycharmProjects/test/temperase.py", line 7, in <module> 
    print(elem.text) 
AttributeError: 'list' object has no attribute 'text' 

什麼我做錯了,有什麼解決辦法謝謝!

+0

非常感謝你們的慷慨幫助!這是我的第一個問題。大! – skeitel

回答

1

因爲elem是一個列表。所以,你應該試試下面的源代碼:

from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get('https://automatetheboringstuff.com/') 
elem = browser.find_elements_by_css_selector('p') 
for el in elem: 
    print(el.text) 
2

再次讀取錯誤:

AttributeError: 'list' object has no attribute 'text'

的方法find_element 小號 _by_css_selector()返回的網頁元素的列表那麼你將不得不遍歷該列表,來。打印每個文件的文本。

0

硒所以你需要通過一個和打印所有的「P」標籤遍歷一個webdriver的「find_elements_by_css_selector」函數返回頁面中所有出現元素的對象(對象的列表)內容。

同樣的方式「find_element_by_css_selector」只返回第一個出現的元素對象,所以你不需要遍歷,可以調用直接方法來獲取內容。