前面学习了seleniumm模块来爬post请求的网页,但是速度很慢,因为实际要打开火狐网页来操作。
现在我们改用requests模块来爬。
使用网站https://www.mcdonalds.com.cn/top/map,查找麦当劳餐厅,获得指定条件的餐厅信息。
这个网页的获得餐厅数据的相关函数就在主页html中,截取如下
view-source:https://www.mcdonalds.com.cn/top/map
$('#search_ipt,#search_ipt_mobile').autocomplete({
source: function (request, response) {
var str = $.trim(request.term);
if (str == '') {
return;
}
avl_map.search_poi(str);
}
});
var avl_map = avalon.define({
......
search_poi: function (val) {
if (val.length > 1) {
$.post('/ajaxs/search_by_keywords', {
keywords: val,
city: cityinfo
}, function (rsp) {
var rtn = $.parseJSON(rsp);
if (rtn.info && rtn.info == 'OK') {
avl_map.searchResult = rtn.tips;
avl_map.searched = 1;
}
});
}
}
search_ipt就是输入条件的文本域。
很明显了,我们感兴趣的网址就是https://www.mcdonalds.com.cn/ajaxs/search_by_keywords,请求方式是post,参数有2个keywords和city。返回是json类型。
我们可以测试一下,捕获网络信息