首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以使用python3从https://www.rt.com/中提取任何页面的评论吗?

我可以使用python3从https://www.rt.com/中提取任何页面的评论吗?
EN

Stack Overflow用户
提问于 2016-07-27 16:18:01
回答 2查看 487关注 0票数 0

我正在写一个网络爬虫。我提取了这个link的标题和主要讨论,但我找不到任何一个评论(Ctrl+u -> Ctrl+f。注释文本)。我想评论是用JavaScript写的。我能把它提取出来吗?

EN

回答 2

Stack Overflow用户

发布于 2016-07-27 21:32:54

RT正在使用来自spot.im的服务进行评论

您需要发出两个POST请求,第一个是用来获取令牌的https://api.spot.im/me/network-token/spotim,另一个是用来获取JSON形式的注释的https://api.spot.im/conversation-read/spot/sp_6phY2k0C/post/353493/get

我写了一个快速脚本来做这件事

代码语言:javascript
运行
复制
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)
票数 3
EN

Stack Overflow用户

发布于 2016-07-27 16:25:34

可以,如果可以使用web浏览器查看,则可以将其解压缩。

如果你看一下源代码,它实际上是一个iframe,它加载了一段javascript,然后在文档中创建了一个新标签,该脚本标签的源代码加载了bundle.js,它实际上包含了注释软件。这反过来又会获取实际的注释。

您可以考虑使用例如webkit来创建一个无头浏览器,它可以像普通浏览器一样执行javascript,而不是手动完成此操作。然后,您可以从中抓取资源,而不是手动让爬虫获取外部资源。

这种无头浏览器的例子可能是SpynnerDryscape或PhantomJS派生的PhantomPy (后者现在似乎已被废弃)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38607502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档