python3上的scrapy如何在javascript上获得文本数据

python3上的scrapy如何在javascript上获得文本数据,python,web-scraping,scrapy,web-crawler,Python,Web Scraping,Scrapy,Web Crawler,在这个页面中,我尝试从一些时间文本中获取时间信息,如“14天前” 在浏览器中,当我将鼠标点移动到该文本时,它会显示基于日期和时间的信息。但是如果我查看网页源代码,我就找不到它。所以我认为它是基于Javascript的 我不是web开发人员,我不确定如何跟踪问题 我的问题是:如何使用chrome开发工具和scrapy shell跟踪基于javascript的数据工作?$scrapy shellhttps://www.reddit.com/r/gameofthrones/ css('[data

在这个页面中,我尝试从一些时间文本中获取时间信息,如“14天前”

在浏览器中,当我将鼠标点移动到该文本时,它会显示基于日期和时间的信息。但是如果我查看网页源代码,我就找不到它。所以我认为它是基于Javascript的

我不是web开发人员,我不确定如何跟踪问题

我的问题是:如何使用chrome开发工具和scrapy shell跟踪基于javascript的数据工作?

$scrapy shellhttps://www.reddit.com/r/gameofthrones/ 

css('[data click id=“timestamp”]::text').get() “15天前” Reddit有一个。在这种情况下,我会认真考虑使用它而不是HTML擦除。

另一方面,如果您真的想做HTML抓取,那么我建议您使用类似于触发Javascript的东西。试图找到隐藏在Javascript对象中的原始数据可能是不值得的。尤其是当Javascript执行额外的处理时,您需要复制这些处理,因为它不会在纯Scrapy上运行。


此图片结果在资源管理器上捕获。

您需要使用Reddit的只读(无参与)子域:

请注意,它是
np
,而不是
www
。在此视图中,您可以在
标记(在任何浏览器中)的HTML中获得完整的日期和时间,而无需运行Javascript:

例如:

scrapy shell 'https://np.reddit.com/r/gameofthrones/'

>>> response.css('time::attr(datetime)').get()
'2010-03-02T22:52:12+00:00'

这不是问题所要寻找的。当您将鼠标悬停在“X天前”文本上时,它会显示一个带有完整日期和时间的弹出窗口。除非触发Javascript事件,否则该数据不能直接在HTML中使用。当您尝试将鼠标移到该单词上时,它会显示“thu feb 07 2019…”等信息,我想获取该信息,并使用时间和标题标记在浏览器上显示该信息。。。。omg@malberts我假设浏览器只显示基于html的信息。但是铬是不同的。。它可以显示时间标签和信息。。。所以我猜它是用javascript工作的。@bluebamus是的,它用javascript显示弹出文本。完整日期/时间不会隐藏在HTML中。相反,它存储在Javascript对象中,您无法直接从Scrapy.Thank bro访问这些对象。在使用explorer检查它之前,我假设它是基于javascript工作的。但不是现在。。。我弄糊涂了。chrome开发工具不显示时间标签,但Explorer开发工具显示时间标签。。。。即使我使用刮擦飞溅,它是否能检测到时间信息@bluebamus Scrapy Splash可以执行Javascript。因此,您将向其发送一个命令,将鼠标悬停在“X天前”文本上,然后您就可以获取文本。当您将鼠标悬停时,它会在HTML的底部添加一个
,其中包含您想要的全文。@bluembams您能添加一个浏览器开发工具如何显示它的屏幕吗?当然!是的。它显示时间和标题标签。。。所以,我很困惑。。chrome是如何工作的。。。我不确定chrome html代码是否使用javascript…我找到了一个解决方案。我将写一个新的答案。这与“”的url结果相同。你能用chrome开发工具检查结果吗。。答复更改…:我认为它是基于动态网站制作的。隐马尔可夫模型。。。是否通过域转发管理多个web浏览?我不明白。如何在“”上显示。“raddit”是否提供高于域服务的服务?或者它是另一个只读网站服务解决方案?如果你知道这个答案,你能告诉我为什么吗?请:两个域都属于Reddit。它们在不同的子域上提供不同的HTML和Javascript(但内容仍然相同)。我不确定他们是否会自动重定向。但基本上,只需使用
np
版本。谢谢您的回答。它应该使我的知识得到提升D