2014-05-19 56 views
1

我怎樣才能讓BeautifulSoup只考慮網頁內容的某個部分?使用BeautifulSoup只考慮網頁內容的某個部分

例如,我要拿起所有div標籤後僅「最看現在」 http://www.dailypress.com/在頁面上。

有云:

from bs4 import BeautifulSoup 
import urllib2 

url = ' http://www.dailypress.com/ ' 
page = urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 

,我可以使用:

str(soup).find(' Most viewed right now') 

找到這句話,但它不是在確定我想要的部分內容很有幫助。

回答

1

查找出包含最多人看的文章的div,發現各個環節裏面:

>>> from bs4 import BeautifulSoup 
>>> import urllib2 
>>> import re 
>>> url = "http://www.dailypress.com" 
>>> soup = BeautifulSoup(urllib2.urlopen(url)) 
>>> most_viewed = soup.find('div', class_=re.compile('mostViewed')) 
>>> for item in most_viewed.find_all('a'): 
...  print item.text.strip() 
... 
Body of driver recovered from Chesapeake Bay Bridge-Tunnel wreck 
Hampton police looking for man linked to Friday's fatal apartment shooting 
Police identify suspect in Saturday's fatal shooting in Hampton 
Teen spice user: 'It's the new crack' 
When spice came to Gloucester 

這裏的竅門是,我們首先找到容器Most Viewed鏈接 - 這是一個divmostViewed類。您可以藉助瀏覽器開發工具來檢查它。

+0

謝謝alecxe。順便說一下,如果沒有「最受關注」的課程,但是網頁上只有一行文字「現在最多查看」了? –

+0

@MarkK然後你可以使用css選擇器,或者只是獲得父母,並用'div'標籤找到所有的孩子。或者,切換到'lxml'並使用xpath表達式。那麼,真的有很多選擇。 – alecxe

+0

再次感謝,alecxe。 –