当我试图解析来自 JavaScript 编写的网站的数据时,我遇到了一个非常奇怪的问题。也许是因为我不是网络开发专家。
这是发生的事情:
我正在尝试从The Globe and Mail获取所有评论数据。如果你检查它的源代码,没有办法使用 Python 并从源代码中解析评论数据,一切都是用 JavaScript 编写的。
然而,有一个神奇的工具叫做“Gigya” API,它可以返回一个 JS 编写的网站的所有评论。Gigya getComments 方法
当我在 Python Scrapy Spider 中使用这些代码行时,它可以返回所有注释。
data = {"categoryID": self.categoryID,
"streamID": streamId,
"APIKey": self.apikey,
"callback": "foo",
"threadLimit": 1000 # assume all the articles have no more then 1000 comments
}
r = urlopen("http://comments.us1.gigya.com/comments.getComments", data=urlencode(data).encode("utf-8"))
comments_lst = loads(r.read().decode("utf-8"))["comments"]
然而,环球邮报正在更新他们的网站,所有在 11 月 28 日之前发布的评论都暂时从网络上隐藏了。这就是为什么在我在这里展示的示例 url 上,你只能看到 2 条评论,因为它们是在 11 月 28 日之后发布的。这 2 条新评论已经添加了新功能 - “React”按钮。
奇怪的是,现在当我运行我的代码时,我可以获得所有在 11 月 28 日之前发布的隐藏的数百条评论,但无法获得我们现在可以在网站上看到的新评论。
我已经尝试了所有与 Gigya 评论相关的方法,但没有一个有效,其他 Gigya 方法,看起来没什么帮助......
有没有办法解决这个问题?
或者至少,你知道为什么,我可以得到所有隐藏的评论,但不能得到具有新功能的可见新commnet 吗?