2016-05-19 12 views
1

ニューヨークタイムズのサイトから記事を拝借し、空の結果セットを得る。私の目的は、h3アイテムのURLとテキストを取得することです。私がこれを実行すると、私は空のセットを取得します。 HTMLは、実際にデータが含まれていないhttp://query.nytimes.com/search/sitesearch/?action=click&contentCollection&region=TopBar&WT.nav=searchWidget&module=SearchSubmit&pgtype=sectionfront#/san+diego/24hours空の結果セット美しいスープ

url = "http://query.nytimes.com/search/sitesearch/?action=click&contentCollection&region=TopBar&WT.nav=searchWidget&module=SearchSubmit&pgtype=sectionfront{data}" 
html = urlopen(url.format(data="#"+'/san+diego/24hours')) 

soup = BeautifulSoup(html.read().decode('utf-8'),"lxml") 
section = soup.find("ol",class_='searchResultsList flush') 
items = section.find_all('li', class_="story") 
print items 

答えて

1

- セクションこすりを印刷すると、私は正しい道... ターゲットURLによ示します。 Chromeデベロッパーツールで[ネットワーク]タブを見ると、あなたは検索結果がこのURLにAJAXクエリによってフェッチされていることがわかります。http://query.nytimes.com/svc/add/v1/sitesearch.json?q=san%20diego&begin_date=24hoursago&facet=true

はここでそれを見つけるのスクリーンショットです:

enter image description here

あなたが持っています開発者ツールを開くには([表示]メニューを試してください)、[ネットワーク]タブを選択し、ページをリロードしてください。最近XHR = XmlHttpRequestと呼ばれるAJAXリクエスト。これは、いくつかのJavascriptがサーバーにデータを要求したことを意味します。

これはJSONなので、実際には運が良かったのは、HTMLを解析するよりもはるかに優れているからです。

+0

よろしくお願いいたします。第二に、これまでに経験したことはありません。それはBS4を使用して言及された値のためにそれを解析することは可能ですか? –

+0

標準ライブラリにある 'json'モジュールを使って解析します。 BS4を使うよりはるかに良い素敵なPython辞書を手に入れることができます。 –

+0

ありがとう、私はそれについてツタンカーメンを探します。 –