【发布时间】:2016-12-04 16:56:39
【问题描述】:
我在尝试解析来自 JavaScript 编写的网站的数据时遇到了一个非常奇怪的问题。也许是因为我不是网络开发专家。
这是发生了什么:
我正在尝试从The Globe and Mail 获取所有 cmets 数据。如果你查看它的源代码,没有办法使用 Python 并从源代码中解析出 cmets 数据,一切都是用 JavaScript 编写的。
但是,有一个神奇的工具叫做“Gigya”API,它可以从一个JS编写的网站返回所有的cmets。 Gigya getComments method
当我在 Python Scrapy Spider 中使用这些代码行时,它可以返回所有的 cmets。
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 日之前发布的 cmets 都暂时从网络上隐藏了。这就是为什么在我在这里展示的示例网址上,您只能看到 2 个 cmets,因为它们是在 11 月 28 日之后发布的。这两个新 cmets 已添加了新功能 - “React”按钮。
奇怪的是,现在当我运行我的代码时,我可以得到所有在 11 月 28 日之前发布的隐藏的数百个 cmets,但无法获得我们现在可以在网站上看到的新 commnet。
我已经尝试了所有与 Gigya 评论相关的方法,但没有一个有效,其他 Gigya 方法,看起来没有帮助......
有没有办法解决这个问题?
或者至少,你知道为什么,我可以获取所有隐藏的 cmets,但无法获取具有新功能的可见新 commnet?
【问题讨论】:
标签: python-3.x parsing web gigya