2016-12-04 5 views
1
import requests 
from lxml import html 

page = requests.get('http://www.cnn.com') 
html_content = html.fromstring(page.content) 

for i in html_content.iterchildren(): 
    print i 

news_stories = html_content.xpath('//h2[@data-analytics]/a/span/text()') 
news_links = html_content.xpath('//h2[@data-analytics]/a/@href') 

私はこのコードを実行して、PythonのWebスクレイピングの仕組みを理解しようとしています。Pythonスクリプトの実行中に出力が出ないCNNからのニュース記事

CNNからトップニュースとそのリンクをスクラップしたいと思います。

私はPythonシェルでこれを実行すると、私が取得news_storiesとnews_linksの出力は次のとおりです。私はこれで間違っているつもりどこ

[] 

私の質問であり、私が何を達成するためのより良い方法がありますこれ以上にしようとしている?

答えて

1

あなたのコードでは、html_contentはページの実際の内容ではなくページアドレスのみを返しています。

html_content = html.fromstring(page.content) 

あなたはそのページの完全なHTMLコードを参照するには、以下の印刷を試すことができます。

import requests 
from lxml import html 

page = requests.get('http://www.cnn.com') 
print page.text 

あなたも何とかコンテンツを買ってあげるならば、あなたはそれをgzip圧縮された応答からを取得しますにもかかわらず、サーバー。 (Get html using Python requests?

CNNのニュース記事をスクラップするには、httplib2ライブラリとBeautifulSoupを使用することを強くお勧めします。それは本当に便利で、あなたが望むものを手に入れます。あなたは、私がその助けにあなたを願っています(ここではretrieve links from web page using python and BeautifulSoup)

を別のStackOverflowのポストを見ることができます。

+0

いや...美しいスープがはるかに簡単です...おかげで... –

+0

は、コーディングをお楽しみください... –

関連する問題