问题描述
我想抓取this table中的条目。它显然是在页面加载后由javascript填充的,因此,我不是直接抓取(使用诸如webdriver之类的东西),而是想直接从javascript正在与之通信的任何服务中请求数据。
使用chrome dev工具的“网络”标签,我认为我已将其范围缩小到xhr POST
到https://www.oregon.gov/oha/ERD/_vti_bin/client.svc/ProcessQuery
,但显示的响应看起来并不相关,并且没有其他网络活动项目似乎也是。
我该如何准确地跟踪正在填充表的请求?
解决方法
HTML5引入了web-storage,它像Cookie一样在本地缓存数据。这样可以防止在首次加载网站后出现数据请求。在chrome开发工具中,转到application
标签,然后在storage
下,查找具有所需数据的密钥。如果存在,则可以清除存储,刷新,然后在获取数据的xhr
选项卡中将看到fetch
或network
[1]请求。您可以右键单击该请求,然后将其复制为curl
命令以直接请求数据而不会进行抓取。您可能会担心该服务会阻止其批准的Web前端之外的访问,但是cors
不能阻止您,因为它仅适用于浏览器。
[1] fetch
是自2015年以来改进的xhr
感谢@sideshowbarker指出我指向sessionStorage
并回答了我的cors
问题。