使用爬虫获取特定城市中肯德基餐厅的信息
import requests
import time
loc = input('请输入需要查询的地址:')
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'}
data = {'cname': '', 'pid': '', 'keyword': loc, 'pageIndex': '1', 'pageSize': '10'}
response = requests.post(url=url, data=data, headers=headers)
text = response.json()
# total_num为餐厅总数, page_nun为这些餐厅在网页上分为几页显示(每页显示10家餐厅),pageIndex的值代表对应的页数
total_num = text['Table'][0]['rowcount']
page_num = total_num // 10 + 1file_name = loc + '肯德基餐厅.txt'
with open(file_name, 'w', encoding='utf-8') as f:for i in range(1, page_num + 1):page_index = idata = {'cname': '', 'pid': '', 'keyword': loc, 'pageIndex': i, 'pageSize': '10'}response = requests.post(url=url, data=data, headers=headers)text = response.json()['Table1']for item in text:f.write('餐厅的名字为{}, 餐厅的地址为{}'.format(item['storeName'], item['addressDetail']))f.write('\r\n')time.sleep(5)
感觉还有几处需要改进
- 使用requests进行查询的语句也许封装成一个函数会闲的更简洁
- 对于翻页,这个解决方案是我恰好看到返回的JSON字符串中的’rowcount’是餐厅总数,而一页显示10家餐厅,所以可以计算出总页数,再分别访问。我觉得也许学习更多以后关于翻页问题会有更好的解决办法
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
