我正在做關於在互聯網上處理新聞文本的研究。所以,我正在編寫一個程序,通過新聞網址獲取和存儲數據庫中的新聞。從HTML內容獲取社交網絡信息
例如,這是一個隨機news url(西班牙新聞網站)。所以,我使用BeautifulSoup
來獲取HTML內容,經過一些簡單的過程後,我獲得了新聞標題,摘要,內容,類別以及有關新聞的更多信息。
但是,正如你可以在我的例子中使用的消息看,還存在一些「社交網絡」的信息(新聞圖像的右側):
- 的建議數量(臉譜)
- 號鳴叫特(Twitter)
- 號+ 1S(谷歌+)
的,我想也獲得這些信息,所以我試圖處理從該部分HTML內容,但它不存在!這是我做了什麼:
>>> import urllib
>>> from BeautifulSoup import BeautifulSoup as Soup
>>> news = urllib.urlopen('http://elcomercio.pe/mundo/1396187/noticia-horror-eeuu-cinco-ninos-muertos-deja-tiroteo-escuela-religiosa')
>>> soup = Soup(news.read())
>>> sociales = soup.findAll('ul', {'class': 'sociales'})[0].findAll('li')
>>> len(sociales)
3
這是Facebook的部分HTML內容:
>>> sociales[0] # facebook
<li class="top">
<div class="fb-plg">
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=224939367568467";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-like" data-href="http://elcomercio.pe/noticia/1396187/horror-eeuu-cinco-ninos-muertos-deja-tiroteo-escuela-religiosa" data-send="false" data-layout="box_count" data-width="70" data-show-faces="false" data-action="recommend"></div></div></li>
Twitter的一部分:
>>> sociales[1] # twitter
<li><a href="https://twitter.com/share" class="twitter-share-button" data-count="vertical" data-via="elcomercio" data-lang="es">Tweet</a><script type="text/javascript" src="//platform.twitter.com/widgets.js"></script></li>
Google+的部分:
>>> sociales[2] # google+
<li><script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{lang: 'es'}
</script><g:plusone size="tall"></g:plusone></li>
正如你所看到的,我正在尋找的信息因爲沒有包含在HTML內容中,所以我猜測它是通過一些API鏈接獲得的。
所以我的問題是:無論如何,我可以從某個新聞的HTML內容中獲得我正在尋找的信息(Facebook推薦數量,推文數量,+ 1的數量)?
好東西,謝謝發佈! – Hoff 2012-04-15 16:07:10