if ($(obj).next().hasClass("dataInfo")) $(obj).next().toggle(); $(obj).after("<div>正在加载...</div>");//否则提示“正在加载” $.ajax({//发起请求 url: apiHref + "/api/HiJob?url=" + url, data: null, beforeSend: function (XHR) { }, success: function (data) { $(obj).next(".dataInfo").html(eval(data.data));//用内容替换提示信息 }, dateType: "json" });
新增拉勾网的数据
我后期又加了“拉勾”网的招聘信息。其他的网站都是直接链接,取信息。而偏偏拉勾就是不同。它是,请求->页面加载->ajax异步请求详情->追加到页面。然而,就因为这个异步,好几个同学就搞不定了。问我,拉勾的数据为什么取不到。在这里就统一分析下吧。
请求如:?city=上海 在浏览器F12监控。
我们可以看到信息列表数据是从?city=上海地址,通过ajax的post请求取得的。
所以,我们后台模拟一个post请求就完事了。
StringContent fromurlcontent = + pn + + kd); fromurlcontent.Headers.ContentType = ); fromurlcontent.Headers.Add(, ); HttpClient httpclient = new HttpClient(); HttpResponseMessage responseMsg = httpclient.PostAsync(result = responseMsg.Content.ReadAsStringAsync().Result; JavaScriptSerializer _jsSerializer = new JavaScriptSerializer(); LagouInfo JPostData = _jsSerializer.Deserialize<LagouInfo>(result);
注意了,我们得到数据之后。还进行的反序列化。因为数据是json格式的。但,不是所有数据都是我们想要的。所以进行序列化,然后只取我们想要的数据。(当然,序列化类,是我对着json数据一个个抠出来,写的类属性)
序列化类:
public class LagouInfo { public string code; public Ccontent content; public string msg; public string requestId; public string resubmitToken; public string success; } public class Ccontent { public string currentPageNo; public string hasNextPage; public string hasPreviousPage; public string pageNo; public string pageSize; public List<Cresult> result; public string start; public string totalCount; public string totalPageCount; } public class Cresult { public string adWord; public string adjustScore; public string city; public string companyId; public List<string> companyLabelList; public string companyLogo; public string companyName; public string companyShortName; public string companySize; public string countAdjusted; public string createTime; public string createTimeSort; public string education; public string financeStage; public string formatCreateTime; public string haveDeliver; public string industryField; public string jobNature; public string leaderName; public string orderBy; public string positionAdvantage; public string positionFirstType; public string positionId; public string positionName; public string positionType; public string positonTypesMap; public string randomScore; public string relScore; public string salary; public string score; public string searchScore; public string showOrder; public string totalCount; public string workYear; }
View Code
然后,接着组装自己想要的数据。