试图建立查询字符串和抓取谷歌结果
Trying to build query string and scrape Google results
我试图建立一个谷歌查询字符串,向该页面发出请求,抓取HTML,并在Chrome扩展中解析它,这是JavaScript。所以我有下面的代码:
var url = "https://www.google.com/search?#q=" + artist + "+" + title;
searchGoogleSampleInformation(url);
function searchGoogleSampleInformation(url)
{
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.onreadystatechange = function ()
{
if (xhr.readyState == 4)
{
return parseGoogleInformation(xhr.responseText, url);
}
}
xhr.send();
}
function parseGoogleInformation(search_results, url)
{
var link = $(".srg li.g:eq(0) .r a", search_results).attr('href');
}
parse方法只是抓取第一个搜索结果的url(这不是我最终想要做的,只是为了测试HTTP请求是否正常工作)。在这条线之后,link
就是undefined
。然后我使用alert(url)
并验证我的查询字符串正在正确构建;我把它从警报窗口复制过来,粘贴到另一个标签上,它就像预期的那样调出了结果。然后我用search_results
打开了一个新窗口,它似乎是谷歌的常规主页,根本没有搜索。我认为这个问题可能是由于xhr.open
调用的异步性而发生的,但翻转也没有帮助。我错过了什么明显的东西吗?
这是因为"https://www.google.com/search?#q=" + artist + "+" + title
最初在内容中没有搜索结果。Google最初呈现的页面没有结果,然后通过JavaScript动态加载结果。由于您只是获取页面的HTML并处理它,因此HTML中的JavaScript永远不会被执行。
您正在进行跨域Ajax调用,这在默认情况下是不允许的。您不能进行跨域调用,除非服务器支持它并且您传递了适当的标头。
然而,正如你提到的你正在构建一个Chrome扩展,这是可能的通过在清单文件中添加几个字段:https://developer.chrome.com/extensions/xhr#requesting-permission
相关文章:
- 以类似于谷歌机器人的方式抓取网站html和javascript
- 试图在网站上抓取谷歌地图api生成的动态数据,但正常抓取返回空白
- JS滑块网站 - 谷歌抓取
- 谷歌可以抓取由JavaScript小部件附加的HTML内容吗?
- 从谷歌地图抓取数据
- 你如何让谷歌抓取流星 js 网站
- 为什么我的ASP网站内容没有被谷歌抓取
- 谷歌没有正确缓存我的AJAX可抓取应用程序
- 如果我在前端用javascript更改链接URL,可以在谷歌上抓取我的网站
- 用Java抓取谷歌图片
- 如何防止谷歌抓取javascript中的部分url
- 抓取国家从谷歌地理代码jquery
- 试图建立查询字符串和抓取谷歌结果
- 每5秒从数据库抓取数据到谷歌地图
- 谷歌地理编码-抓取地址连同坐标
- 我如何从谷歌API抓取数据的自动完成领域在余烬
- 使用chrome扩展标识抓取Oauth2谷歌所需的数据
- 我的网站不是由谷歌抓取
- Web抓取Python使用谷歌Chrome扩展
- 使用 PHP 抓取谷歌搜索