在URL中传递页面抓取的数据
passing page scraped data in the URL
在我的Chrome扩展中,我试图从当前选项卡(content.js中)中抓取信息,并将其作为参数发送到提供的URL(background.js)。似乎我可以从选项卡中抓取所有内容,并将它附加到URL中,除了输入标记的值。这是我的代码:
content.js:
var elements = new Array("form","h1","input","td","textarea","time","title","var");
//declare an array for found elements
var foundElements = new Array();
//declare an array for found ids
var foundIds = new Array();
//this counter is used to hold positions in the element array.
var elementCounter = 0;
//this counter is used to hold positions in the foundIds array
var idsCounter = 0;
//this counter is used to hold positions in the classCounter array.
var classCounter = 0;
//and we're going to output everything in a giantic string.
var output = "URL=" + document.URL;
//scrape the page for all elements
for (var i = 0; i < elements.length; i++)
{
var current = document.getElementsByTagName(elements[i]);
if(current.length>0)
{
for (var z=0; z<current.length; z++)
{
var inTxt = current[z].innerText;
output += "&" + elements[i] + "=" + inTxt;
}
elementCounter++;
//now that we have an array of a tag, check it for IDs and classes.
for (var y = 0; y<current.length; y++)
{
//check to see if the element has an id
if(current[y].id)
{
//these should be unique
var hit = false;
for (var x = 0; x<foundIds.length; x++)
{
if(foundIds[x]==current[y].id)
{
hit=true;
}
}
//if there was no hit...
if(!hit)
{
foundIds[idsCounter]=current[y].id;
idsCounter++;
var currVal = current[y].value;
output+="&" + current[y].id + "=" + currVal;
}
}
//now we pull the classes
var classes = current[y].classList;
if(classes.length>0)
{
for (var x = 0; x<classes.Length; x++)
{
var hit = false;
for (var z = 0; z<foundClasses.length; z++)
{
if(foundClasses[z]==classes[x])
{
hit=true;
}
}
//if there was not a hit
if(!hit)
{
foundClasses[classCounter]=classes[x];
classCounter++;
output+="&" + classes[x] + "=";
}
}
}
}
}
}
chrome.runtime.sendMessage({data: output});
background.js:
var output2;
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
output2 = "text_input1=";
output2 += request.data;
});
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.create({url: "http://www.google.com?" + output2}, function(tab) {
chrome.tabs.executeScript(tab.id, {file: "content.js"}, function() {
sendMessage();
});
});
});
有人知道为什么输入标签的值是空的吗?
因为您正试图使用current[z].innerText
获取输入文本。但是,输入必须使用current[z].value
。
相关文章:
- Beautifulsoup抓取数据,其中有js文本在中间
- 无法通过请求模块抓取数据 - Fobidden
- 从谷歌地图抓取数据
- 从 Web 抓取数据并同时执行 api 调用的编程语言
- 获取空白抓取数据
- 使用span标签中可用的Nokogiri抓取数据
- 如何使用Python(最好是pandas)从Javascript表中抓取数据
- 如何访问NodeWebkit中html代码中的节点模块中的抓取数据
- 使用python和PyQt4从mlb.com中抓取数据,而不呈现javascript
- 关于抓取数据、无头浏览器和Python
- 如何从asmx web服务生成的页面中抓取数据
- 当数据来自JavaScript时,我可以从网页中抓取数据吗
- PHP AJAX MySql抓取数据单选按钮
- 如何从需要用户导航的站点部分抓取数据
- 需要一个Javascript函数自动从网站抓取数据
- 从get请求查询node.js抓取数据
- 每5秒从数据库抓取数据到谷歌地图
- 我如何从谷歌API抓取数据的自动完成领域在余烬
- 从jquery中抓取数据到csv中
- 我如何使AJAX从MVC中的控制器中抓取数据?