我正在使用Bing Search API 2.0(XML)和PHP来检索结果.
但是当运行一些查询时,API不会返回Bing.com会得到的(相同)结果.
当我发送此请求时:( 这是使用API)
http://api.search.live.net/xml.aspx?Appid=__________&query=3+ts+site%3Amycharity.ie/charity&sources=web&web.count=10&web.offset=0
Run Code Online (Sandbox Code Playgroud)
我得到0结果.
但如果我去Bing.com搜索培根,网址将是:
http://www.bing.com/search?q=bacon&go=&form=QBRE&filt=all&qs=n&sk=&sc=8-5
Run Code Online (Sandbox Code Playgroud)
因此,如果我将我的API查询替换为此URL,如下所示:
http://www.bing.com/search?q=3+ts+site%3Amycharity.ie/charity&go=&form=QBRE&filt=all&qs=n&sk=&sc=8-5
Run Code Online (Sandbox Code Playgroud)
我应该再次获得0结果,对吗?
不,我得到了1个结果.(我用API寻找的结果).
为什么是这样?有没有办法解决?
在它的当前版本中,是否可以在访问它的API时使用Bing的"Narrow By Date"功能?
我找不到任何关于如何缩小结果的信息,只显示"过去24小时"或"过去一周"的结果(依此类推).
网站/文档并不完全清楚我能做什么和不能做什么,以及如何做.你们中的任何人都知道这是否可能?
我可以在其高级搜索关键字页面上看到,您可以在此处使用其他缩小功能(区域,语言,进纸等):http://onlinehelp.microsoft.com/en-ca/bing/ff808421.aspx
如果您需要更多背景信息或信息,请询问.感谢您的耐心和帮助.
有没有人使用Bing Map Web Services(以前的Virtual Earth Web Services)与Delphi合作?
根据我迄今为止的经验(使用Delphi和Visual Studio C#),我准备放弃它并使用MapPoint Web服务,直到Bing Maps Web Services的未来版本出现.但是,我以为我会在这里发一个问题作为最后的手段......
我导入了Token Service和Geocode Services WSDL文档.
我成功地从令牌服务中获取了令牌,但是根本无法让Geocode服务工作.它总是返回以下错误消息:由于EndpointDispatcher上的ContractFilter不匹配,无法在接收方处理带有Action''的消息.这可能是由于合同不匹配(发送方与接收方之间的操作不匹配)或发送方与接收方之间的绑定/安全性不匹配.检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息,传输,无).
我注意到Delphi没有为SOAPAction标头指定值,所以我尝试指定" http://staging.dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geocode "并得到以下错误消息:
由于内部错误,服务器无法处理请求.有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或来自<serviceDebug>配置行为),以便将异常信息发送回客户端,或者根据Microsoft .NET Framework打开跟踪3.0 SDK文档并检查服务器跟踪日志.
下面是我的Delphi代码和发送的原始XML,然后是来自Microsoft的示例C#代码的类似调用发送的原始XML.XML有几个不同之处,但我不确定关键是什么区别.
var
Service: IGeocodeService;
Request: Geocode;
Response: GeocodeResponse3;
ResponseIndex: Integer;
Token: WideString;
Filters: ArrayOfFilterBase;
begin
Token := GetToken;
Service := GetIGeocodeService;
Request := Geocode.Create;
try
Request.request := GeocodeRequest.Create;
Request.request.Credentials := GeocodeService.Credentials.Create; // Freed by GeocodeRequest class
Request.request.Credentials.Token := Token;
Request.request.Query := AddressEdit.Text;
Request.request.Options := GeocodeOptions.Create;
SetLength( Filters, 1 );
Filters[ 0 ] := ConfidenceFilter.Create; …Run Code Online (Sandbox Code Playgroud) Bing的搜索热门令人印象深刻,微软是否不让任何人进入他们的搜索技术幕后?试过http://www.discoverbing.com但找不到我的问题的答案.
微软自己的新Bing API示例不起作用.我试过很多方面,它只是表明:
服务器错误
401 - 未经授权:由于凭据无效,访问被拒绝.
您无权使用您提供的凭据查看此目录或页面.
示例在官方文档中给出的编码如下,它分解为
'proxy' => 'tcp://127.0.0.1:8888',
Run Code Online (Sandbox Code Playgroud)
我100%确定我的密钥是正确的,当我在浏览器网址中输入它时,它工作正常,即
https://api.datamarket.azure.com/Bing/SearchWeb/Web?Query=%27love+message%27
Run Code Online (Sandbox Code Playgroud)
(您需要将API密钥作为密码,用户名可以是任何东西)
<html>
<head>
<link href="styles.css" rel="stylesheet" type="text/css" />
<title>PHP Bing</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Type in a search:
<input type="text" id="searchText" name="searchText"
value="<?php
if (isset($_POST['searchText']))
{
echo($_POST['searchText']);
}
else
{
echo('sushi');
}
?>"
/>
<input type="submit" value="Search!" name="submit" id="searchButton" />
<?php
if (isset($_POST['submit']))
{
// Replace this value with your account key
$accountKey = 'BKqC2hIKr8foem2E1qiRvB5ttBQJK8objH8kZE/WJVs=';
$ServiceRootURL = 'https://api.datamarket.azure.com/Bing/Search/';
$WebSearchURL = $ServiceRootURL . 'Image?$format=json&Query=';
$context …Run Code Online (Sandbox Code Playgroud) target ="_blank"在新选项卡或新窗口中打开链接基于用户设置,当我单击target ="_blank"链接时,它将在新窗口中打开(IE9).但是在Bing中,当点击"查看完整尺寸图像"时,它会在新标签页中打开!(你现在可以测试一下)
他们是怎么做到的?
我试图从Bing搜索API获取数据,并且因为现有的库似乎基于旧的已停止的API,但我尝试自己使用request库,这似乎是最常见的库.我的代码看起来像
var SKEY = "myKey...." ,
ServiceRootURL = 'https://api.datamarket.azure.com/Bing/Search/v1/Composite';
function getBingData(query, top, skip, cb) {
var params = {
Sources: "'web'",
Query: "'"+query+"'",
'$format': "JSON",
'$top': top, '$skip': skip
},
req = request.get(ServiceRootURL).auth(SKEY, SKEY, false).qs(params);
request(req, cb)
}
getBingData("bookline.hu", 50, 0, someCallbackWhichParsesTheBody)
Run Code Online (Sandbox Code Playgroud)
Bing返回一些JSON,我有时可以使用它,但如果响应主体包含大量非ASCII字符JSON.parse,则会抱怨字符串格式错误.我尝试切换到ATOM内容类型,但没有区别,xml无效.检查request()回调中可用的响应主体实际上显示错误的代码.
所以我用一些python代码尝试了相同的请求,这似乎一直很好.以供参考:
r = requests.get(
'https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&Query=%27sexy%20cosplay%20girls%27&$format=json',
auth=HTTPBasicAuth(SKEY,SKEY))
stuffWithResponse(r.json())
Run Code Online (Sandbox Code Playgroud)
我无法用较小的响应重现问题(例如限制结果的数量)并且无法识别导致问题的单个结果(通过加强偏移).我的印象是,响应以块的形式读取,以某种方式进行转码并以错误的方式重新组装,这意味着如果某些多字节字符被拆分,则json/atom数据将变为无效,这发生在较大的响应但不是较小的响应.
作为节点的新手,我不确定是否有我应该做的事情(在某处设置编码?Bing返回UTF-8,所以这似乎不需要).
任何人都知道发生了什么事吗?
FWIW,我在OSX 10.8上,节点是通过macports安装的v0.8.20,请求是通过npm安装的v2.14.0.
我有一个 PHP 脚本,它发送纯文本电子邮件,其中包含某些操作的链接,例如确认和协议等。
我注意到,Web 版 Outlook 会在用户单击链接之前自动检测该链接并在后台访问该链接。我注意到了这一点,因为只要我打开电子邮件,数据库中的内容就会发生变化。另外检查 Apache 访问日志,我看到BingPreview/1.0b作为用户代理。
这非常糟糕,因为用户可能不想执行这些操作。
我可以发送电子邮件标头来禁用此行为吗?建议?
当bing试图索引一些具有unicode字符的页面时,我的网站出现了很多错误.
例如:
http://www.example.com/kjøp
Run Code Online (Sandbox Code Playgroud)
Bing正试图索引
http://www.example.com/kjøp
Run Code Online (Sandbox Code Playgroud)
然后我得到错误"System.NullReferenceException:对象引用未设置为对象的实例." 因为没有这样的控制器.
Google可以很好地使用此类链接.如何帮助bing了解挪威字母?