如何从asmx Web服务生成的页面中抓取数据

时间:2015-11-17 14:38:45

标签: javascript php jquery ajax web-services

我一直在网上搜索,但没有发现任何有用的东西。我需要自动从供应商网站更新我的产品价格。我想立刻从所有产品的类别页面中获取信息。

我使用简单的html dom方法来获取数据。当我使用标签来检索我从firefox firebug扩展程序获得的价格时,它什么都没打印。我尝试打印该类别页面中的所有链接,其中没有产品链接。当我通过右键单击页面查看网站的源代码时,我看到没有与产品相关的代码。 div是空的,如;

<div class=coll-2 fleft> </div>

但它在firebug扩展中充满了代码。然后我看到一个js文件有这个代码;

function GetProductListHeader() {
var startPage = GetStartPage();
if (pageName == 'kategori' || pageName == 'reyon') {
    var BrandList = GetQueryStringByName("Brand");
    var ColorList = GetQueryStringByName("Color");
    var PropList = GetQueryStringByName("propid");
    var ItemDim1CodeList = GetQueryStringByName("vcode");
    var QPrice = GetQueryStringByName("price");
    var cFilter = GetQueryStringByName("cfilter");

    var parametre = { PageName: pageName, pUrl: PageUrl, BrandList: BrandList, ColorList: ColorList, ItemDim1CodeList: ItemDim1CodeList, PropList: PropList, QPrice: QPrice, cFilter: cFilter, startPage: startPage };
    $.ajax(
        {
            url: '/WS/wsProduct.asmx/GetProductListHeader',
            type: 'POST',
            processData: false,
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(parametre),
            dataType: 'json',
            async: true
        })
        .done(function (e) {
            if (e.d != "") {  
                $('.coll-2').html(e.d);
                GetProductList(startPage);
            }
        })
}
}

有没有办法用php获取这个数据?

谢谢。

编辑:我尝试在从chrome网络获取卷曲代码后设置卷曲代码,我使用下面的脚本;

$html = 'curl "http://bebekbayi.com/WS/wsProduct.asmx/GetProductList" \ 
    -H "Cookie: ASP.NET_SessionId=wy5hyt1bujcrdka2hpbp2wnm; _gat=1; _ga=GA1.2.1204447549.1447830812" \ 
    -H "Origin: http://bebekbayi.com" \ 
    -H "Accept-Encoding: gzip, deflate" \ 
    -H "Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4" \ 
    -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" \ 
    -H "Content-Type: application/json; charset=UTF-8" \ 
    -H "Accept: application/json, text/javascript, */*; q=0.01" \ 
    -H "Cache-Control: max-age=0" \ 
    -H "X-Requested-With: XMLHttpRequest" \ 
    -H "Connection: keep-alive" \ 
    -H "Referer: http://bebekbayi.com/kategori/bakim-cantalari" 
    --data-binary "{""PageName"":""kategori"",""pUrl"":""bakim-cantalari"",""pIndex"":1,""BrandList"":"""",""ColorList"":"""",""ItemDim1CodeList"":"""",""PropList"":"""",""QPrice"":"""",""cFilter"":""""}" --compressed';
exec($html,$result);
   foreach($result as $res){

       echo $res . '<br>'; 
   }

它回来了; [InvalidOperationException:对于意外以'/ GetProductList'结尾的URL无法识别请求格式。]

1 个答案:

答案 0 :(得分:2)

我认为您直接获取数据源的任务变得更加容易。

您可以做的是获取Web服务的完整URL并进行PHP CURL调用。

因此,您将获得响应,通常它将在XML中,但它将取决于如何编写此Web服务。

这是代码。

body {
    background: white;
    max-width: 320px;
    min-height: 100%;
    margin: auto;
}