失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python 爬虫学习笔记(五(2))urllib POST请求获取KFC门店位置信息

Python 爬虫学习笔记(五(2))urllib POST请求获取KFC门店位置信息

时间:2019-07-17 12:25:12

相关推荐

Python 爬虫学习笔记(五(2))urllib POST请求获取KFC门店位置信息

目标是爬取KFC官网,某地哪里有门店,前n页数据

选择城市北京,F12检查页面,发现就一个有用的接口,确实是我们需要的。不断观察接口发现Form Data中有个参数是pageIndex,是几就代表了第几页的门店信息。

完整代码

参数前面加了_是为了区分形参和实参

import urllib.requestimport urllib.parsedef create_request(_page):base_url = '/kfccda/ashx/GetStoreList.ashx?op=cname'data = {'cname': '北京','pid': '','pageIndex': _page,'pageSize': 10}headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/98.0.4758.102 Safari/537.36 "}data = urllib.parse.urlencode(data).encode('utf-8')_request = urllib.request.Request(url=base_url, data=data, headers=headers)return _requestdef get_content(_request):res = urllib.request.urlopen(_request)_content = res.read().decode('utf-8')return _contentdef download(_page, _content):with open('kfc' + str(_page) + '.json', 'w', encoding='utf-8') as f:f.write(_content)if __name__ == '__main__':start_page = int(input('起始页面'))end_page = int(input('结束页面'))for page in range(start_page, end_page + 1):request = create_request(page)content = get_content(request)download(page, content)

运行程序,例如输入1和2。(不敢输入太大的数,怕被封IP)

稍等片刻后文件目录下出现了我们的下载文件,kfc1.json即第一页的10个门店信息。

小技巧,文件内容都在一行之中,按住CTRL + ALT + L可以规整格式。但要避免快捷键冲突,例如开着QQ会锁定QQ账号。。关闭QQ即可解决冲突。

总结

与上一篇文章提到的GET请求很相似,都属于ajax的get和post请求POST请求的参数data需要编码为utf-8格式打开文件的时候也要规定打开的编码格式encoding=‘utf-8’CTRL + ALT + L可以让json文件更规整

如果觉得《Python 爬虫学习笔记(五(2))urllib POST请求获取KFC门店位置信息》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。