Python爬虫学习第二章-5-使用requests模块爬取肯德基餐厅信息

it2023-11-17  85

Python爬虫学习第二章-5-使用requests模块爬取肯德基餐厅信息

  这一节是使用requests模块爬取肯德基餐厅信息

  在这个案例中,输入店的地址并点击查看后,地址栏中的地址未发生改变,也就是说明这时发起的是一个Ajax请求,需要在network中看XHR。

步骤:

先根据Request URL指定url(http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword),指定完url紧接着要进行UA伪装,即定义一个headers;

再根据url和 Ajax包最后一段进行参数处理;然后根据Request Method确定发送的是什么请求,从而进行发送请求,并定义一个response来接受响应的数据对象;

然后从响应对象中获取响应数据,根据Content-Type确定是什么类型的数据,该用什么方法;最后进行持久化存储

实现代码:

import requests if __name__=="__main__": #1、指定url post_url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' #2、进行UA伪装 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36' } # 在url之后要紧接着进行UA伪装,也是定义一个headers #3、进行参数处理,根据最后一部分确定参数 address = input('enter an address name:') data = { 'cname':'', 'pid':'', 'keyword': address , 'pageIndex': '1', 'pageSize': '10' } #4、发送请求 response = requests.post(url = post_url,data = data,headers = headers) #5、获取数据,从Content-Type: text/plain; charset=utf-8中可以看出是text类型的 page_text = response.text #6、持久化存储 filename = address+'.html' with open(filename,'w',encoding='utf-8') as fp: fp.write(page_text) print("over")

  注意:使用open打开文件的话最后需要加fp。close()方法关闭文件,避免占用资源。使用with open()的话不需要

最新回复(0)