2019-11-18 爬网页4-爬基于post请求的网页(requests,还有一些编码困惑)

本文介绍了如何使用requests模块代替selenium爬取基于POST请求的网页,以获取麦当劳餐厅信息为例。在过程中,作者遇到了编码困惑:从JSON字符串转为Python字典后,数据变为Unicode类型,导致在GBK编码的DOS窗口中显示异常。通过尝试将DOS窗口编码改为UTF-8和再改回GBK,最终解决了显示问题,但原因仍不明朗。
摘要由CSDN通过智能技术生成

前面学习了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类型。

我们可以测试一下,捕获网络信息在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值