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

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()的话不需要

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值