Seb*_*son 68 javascript google-chrome xmlhttprequest google-chrome-extension web-scraping
使用JavaScript以及可用的更多技术从Google Chrome扩展程序中执行网页刮取当前未打开的标签的最佳选项有哪些.其他JavaScript库也被接受.
重要的是掩盖抓取行为就像普通的Web请求一样.没有AJAX或XMLHttpRequest的指示,如X-Requested-With: XMLHttpRequest
或Origin
.
必须可以从JavaScript访问已删除的内容,以便在扩展中进一步操作和呈现,最有可能是作为字符串.
在任何WebKit/Chrome特定的API中是否有任何钩子:s可用于制作正常的Web请求并获取操作结果?
var pageContent = getPageContent(url); // TODO: Implement
var items = $(pageContent).find('.item');
// Display items with further selections
Run Code Online (Sandbox Code Playgroud)
Bonus-points使这项工作从磁盘上的本地文件开始,用于初始调试.但如果这是唯一的一点是停止解决方案,那么就忽略奖励积分.
Eli*_*rey 12
尝试使用XHR2 responseType = "document"
并重新(new DOMParser).parseFromString(responseText, getResponseHeader("Content-Type"))
使用我的text/html
补丁.有关如何检测支持(同步检查从blob 创建的对象URL )的示例,请参阅https://gist.github.com/1138724.responseType = "document
response === null
text/html
使用Chrome WebRequest API隐藏X-Requested-With
等标题.
Ans*_*hul 10
如果您对Google Chrome插件之外的其他内容感觉很好,请查看在后台使用Qt-Webkit的phantomjs,就像浏览器发出ajax请求一样.您可以将其称为无头浏览器,因为它不会在屏幕上显示输出,并且在您执行其他操作时可以在后台完全工作.如果需要,可以从提取的页面中导出图像,pdf.它提供了JS接口来加载页面,点击按钮等,就像在浏览器中一样.您还可以在要抓取的任何页面上注入自定义JS(例如jQuery),并使用它来访问dom并导出所需数据.由于使用Webkit,其渲染行为与Google Chrome完全相同.
另一个选择是使用基于Mozilla引擎的Aptana Jaxer,它本身就是一个非常好的概念.它也可以用作简单的刮削工具.
我不确定只使用JavaScript是完全可能的,但是如果你可以为你的扩展设置一个专用的PHP脚本,使用cURL来获取页面的HTML,PHP脚本可以为你抓取页面,你的扩展可以读取它通过AJAX请求.
然而,被抓取的实际页面不会知道它是一个AJAX请求,因为它是通过cURL访问的.
归档时间: |
|
查看次数: |
20565 次 |
最近记录: |