2017-08-31 58 views
3

我是BeautifulSoup4的新手,並且遇到了一個似乎很基本的問題。我只能通過身份證找到,但不能按班上課。例如,我在看它有HTML在它下面的部分站點:只能通過id找到,而不能通過班級找到BeautidulSoup4(Python3.x)

enter image description here

現在,以下工作:

page_soup.findAll('div', {'id': 'page-content'}) 

而下面發現什麼:

page_soup.findAll('div', {'class': 'main-container'}) 

所以我的問題是:'class'與'id'屬性有區別嗎?如果是這樣,按類名搜索的正確方法是什麼?

只是爲了完成,雖然我認爲沒關係,但我通過使用selenium包的page_source方法獲得了html。

編輯Here是這種頁面的一個例子。如果我們檢查上表,包括玩家的位置,年齡等,我們會得到上面的html快照。

+2

我假設您在發佈此問題時在第二行中發生了錯字? '{'class:'main-container'}' – DMan

+0

@Dan,是的,謝謝你,修正它 – splinter

+0

這兩行應該返回至少一個標記。你能包含更多的代碼和html數據嗎? –

回答

1

下面是我所運行的命令,它爲我

In [1]: from bs4 import BeautifulSoup 

In [2]: import requests 

In [3]: res = requests.get("http://www.spotrac.com/mlb/atlanta-braves/freddie-freeman-7359/") 

In [4]: soup = BeautifulSoup(res.text,"lxml") 

In [5]: len(soup.findAll('div', {'class': 'main-container'})) 
Out[5]: 1 

In [6]: soup = BeautifulSoup(res.text,"html5lib") 

In [7]: len(soup.findAll('div', {'class': 'main-container'})) 
Out[7]: 1 

In [8]: import sys; sys.version 
Out[8]: '3.6.2 (default, Jul 17 2017, 16:44:45) \n[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]' 

的偉大工程,正如你可以看到我的作品在這兩個解析器。