:
あなたはnode
の代わりに名前を使用することもできます前方に
ページが読み込まれた後にコメントセクションがajax呼び出しを介して読み込まれるため、あなたが持っているコードは機能しません。ブラウザでハード・リロードすると、セクション・コメントにスピナー・アイコンとLoading...
のテキストがあり、コンテンツのロードを待っていることがわかります。 Nokogiriがhttp
リクエストでページを取得すると、の前に表示されるhtmlコンテンツが取得され、の前にコメントが読み込まれます。彼らはの一部ではないので、あなたが探しているdiv
Sを見つけることができません理由であること
<div id="watch-discussion" class="branded-page-box yt-card">
<div id="comment-section-renderer"
class="comment-section-renderer vve-check"
data-visibility-tracking="CCsQuy8iEwjr3P3u1uzNAhXIepAKHRV9D8Ao-B0=">
<div class="action-panel-loading">
<p class="yt-spinner ">
<span class="yt-spinner-img yt-sprite" title="Loading icon">
</span>
<span class="yt-spinner-message">Loading...</span>
</p>
</div>
</div>
</div>
:実際のところ内容は、後になる場所は次のようにルックスを追加しましたあなたは持っています。
ブラウザでネットワークコンソールを見ると、コメントデータを取得するためのajaxリクエストがhttps://www.youtube.com/watch_fragments_ajax?v=tntOCGkgt98&tr=time&distiller=1&ctoken=EhYSC3RudE9DR2tndDk4wAEAyAEA4AEBGAY%253D&frags=comments&spf=load
に送信されているようです。あなたはv
パラメータは動画IDで見ることができるように、しかし、注意点がいくつかあります:
- あなたは元のページの内容をこすることで得ることができます
ctoken
paramは、あります。それは 'COMMENTS_TOKEN': "<token>"
の形式で<script>
タグの内部にあります。
- ただし、
session_token
をAJAXリクエストの本文にフォームデータとして送信する必要があります(POST
)。私はAJAXリクエストやJavascriptを取り扱いに従うことを意図していない私の知る限りとしてあなたが、ここで鋸山の限界に挑戦することになると思い、私は:(どこから来ているのか分からない。
こと。たぶんthe ruby Selenium driverが優れていますこれに適しています。
HTH
出力やエラーが表示されない場合は、実際に期待するHTMLを受け取っていることを確認する必要があります。ブラウザでJavascriptをオフにして、そのページを見てください。あなたはあなたが望むコンテンツを見ますか?コマンドラインで 'nokogiri 'https://www.youtube.com/watch?v = tntOCGkgt98''を使い、' curl'や 'wget'を使ってページをダウンロードしてください。あなたがそれを見つけることができない場合、オッズは動的なHTMLであり、DHTMLを解釈できるものを使用しない限り、必要な情報は利用できません。 –
あなたの質問に本当に答えることはできませんが、APIはどうですか? – nikkypx