https://www.reddit.com/r/gameofthrones/
在此页面中,我尝试从“ 14天前”之类的时间文本中获取时间信息。
在浏览器中,当我将鼠标指针移到该文本时,它会显示基于日期时间的信息。但是,如果我查看网页源,就找不到它。所以我认为它基于Javascript。
我不是Web开发人员,并且不确定如何找到问题。
我的问题是:如何使用chrome dev-tools和scrapy shell跟踪基于javascript的数据?
答案 0 :(得分:1)
$ scrapy shell https://www.reddit.com/r/gameofthrones/
...
>>> response.css('[data-click-id="timestamp"]::text').get()
'15 days ago'
答案 1 :(得分:0)
Reddit有一个official API。在这种情况下,我会认真考虑使用它而不是HTML抓取。
另一方面,如果您确实想要进行HTML抓取,那么我建议您使用Scrapy Splash之类的东西来触发该Javascript。试图找到隐藏在Javascript对象中的原始数据可能不值得。特别是如果Javascript进行了其他处理,您需要复制这些处理,因为它无论如何都不会在纯Scrapy上运行。
答案 2 :(得分:0)
答案 3 :(得分:0)
您需要使用Reddit的只读(无参与)子域:
https://np.reddit.com/r/gameofthrones/
请注意,它是np
而不是www
。在此视图中,您可以在<time>
标签(在任何浏览器中)的HTML中获取完整的日期和时间,而无需运行Javascript:
示例:
scrapy shell 'https://np.reddit.com/r/gameofthrones/'
>>> response.css('time::attr(datetime)').get()
'2010-03-02T22:52:12+00:00'