2016-07-27 3 views
0

私はWebクローラを作成しています。私は見出しを抽出し、これについての主な議論はlinkですが、コメントのいずれかを見つけることができません(Ctrl + u - > Ctrl + f。コメントテキスト)。コメントはJavaScriptで書かれていると思います。それを抽出することはできますか?python3を使用してhttps://www.rt.com/から任意のページのコメントを抽出できますか?

答えて

1

はい、ウェブブラウザで見ることができれば、それを抽出することができます。

ソースを見ると実際にはJavaScriptが読み込まれたiframeであり、ドキュメントにはそのスクリプトタグのソースでbundle.jsをロードする新しいタグが作成されます。このタグにはコメントのソフトウェアが含まれています。これは次に、実際のコメントを取得します。

これを手動で行う代わりに、Webkitなどを使用して、通常のブラウザのようにJavaScriptを実行するヘッドレスブラウザを作成することを検討できます。次に、手動でクローラーに外部リソースをフェッチさせる代わりに、そこから踏み込むことができます。

このようなヘッドレスブラウザの例は、Spynner,Dryscape、またはPhantomJS由来のPhantomPyです(後者は現在放棄されているプロジェクトのようです)。

+0

を行うための迅速なスクリプトを書きました;'しかし、ファイルがある場合?コメントを抽出するためにそのファイルに入ることはできますか? – user6575792

+0

URLからファイルをダウンロードする必要があります。ブラウザは、iframeのsrcとして参照すると自動的にそのファイルをダウンロードします。コメントはそのファイルに直接格納されないため、そこからコメントを抽出することはできません。これは、コメントを処理するためのコードです。 – jksoegaard

+0

あなたはコメントのようなものを抽出するいくつかの例を紹介してくれますか?チュートリアルやコードは?私はそれがどうやってできるのか理解したいですか? – user6575792

0

RTあなたはJSONとしてのコメントを取得するにはhttps://api.spot.im/conversation-read/spot/sp_6phY2k0C/post/353493/getそして、トークンを取得するhttps://api.spot.im/me/network-token/spotim最初、2つのPOSTリクエストを作る行う必要があり、コメント

ためspot.imからサービスを使用しています。

は、私が "// www.spot.im/launcher/bundle.js")、 `ドキュメントを見て、この

import requests 
import re 
import json 

def get_rt_comments(article_url): 
    spotim_spotId = 'sp_6phY2k0C' # spotim id for RT 
    post_id = re.search('([0-9]+)', article_url).group(0) 

    r1 = requests.post('https://api.spot.im/me/network-token/spotim').json() 
    spotim_token = r1['token'] 

    payload = { 
     "count": 25, #number of comments to fetch 
     "sort_by":"best", 
     "cursor":{"offset":0,"comments_read":0}, 
     "host_url": article_url, 
     "canonical_url": article_url 
    } 

    r2_url ='https://api.spot.im/conversation-read/spot/' + spotim_spotId + '/post/'+ post_id +'/get' 
    r2 = requests.post(r2_url, data=json.dumps(payload), headers={'X-Spotim-Token': spotim_token , "Content-Type": "application/json"}) 

    return r2.json() 

if __name__ == '__main__': 
    url = 'https://www.rt.com/usa/353493-clinton-speech-affairs-silence/' 
    comments = get_rt_comments(url) 
    print(comments) 
+0

javascriptの素材をこする2つの要求はできますか? – user6575792

+0

JavaScriptを心配する必要はありません。上記のメソッドはJSON形式のコメントを提供します(これは、ブラウザのJavaScriptがコメントを表示するために使用しているデータです)。スクリプト – Mono

+0

を実行してみてください。1. jsonが返されました。 'comment.text'はメソッドではありません。 2. http:// www.aljazeera.com /から同じ(コメント抽出)をしたい。私はファントムズとファントパイについて読んだ。この目的のために使用できますか? – user6575792

関連する問題