什么是requests模块

  requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。

python网络爬虫之requests模块 随笔 第1张
因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
    手动处理url编码
    手动处理post请求参数
    处理cookie和代理操作繁琐
    ......

   
使用requests模块:
    自动处理url编码
    自动处理post请求参数
    简化cookie和代理操作
    ......
为什么要使用requests模块

如何使用requests模块

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
  • 安装:
    • pip install requests
  • 使用流程
    • 指定url
    • 基于requests模块发起请求
    • 获取响应对象中的数据值
    • 持久化存储

基于如下5点展开requests模块的练习

1.基于requests模块的get请求
2.基于requests模块的post请求
3.基于requests模块ajax的get请求
4.基于requests模块ajax的post请求
5.综合练习

案例演示代码演示:

1.基于requests模块的get请求,需求:

python网络爬虫之requests模块 随笔 第3张
import requests

#1.指定url
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
url = 'https://www.sogou.com/'
#2.发起请求:get返回一个响应对象
response = requests.get(url=url,verify=False,headers=headers)
#3.获取响应数据:text属性返回的是字符串形式的响应数据
page_text = response.text
print(page_text)
#4.持久化存储
with open('./sogou.html','w',encoding='utf-8') as fp:
    fp.write(page_text)
    print('over!!!')
需求:爬取搜狗首页的页面数据 python网络爬虫之requests模块 随笔 第5张
import requests
wd = input('enter a word:')
#url携带的参数需要手动处理
url = 'https://www.sogou.com/web'

#将参数手动处理成了字典的形式
param = {
    'query':wd
}
#使用params参数处理了请求携带的参数
response = requests.get(url=url,params=param)

page_text = response.text
fileName = wd+'.html' #文件名

#数据持久化
with open(fileName,'w',encoding='utf-8') as fp:
    fp.write(page_text)
    print(fileName,'爬取成功!')
需求:爬取指定词条对应搜狗搜索结果页面

 

2.基于requests模块的post请求:

 

3.基于requests模块ajax的git请求:

 python网络爬虫之requests模块 随笔 第7张

python网络爬虫之requests模块 随笔 第8张

python网络爬虫之requests模块 随笔 第9张

prsponse这里的数据在世我们拿到的数据信息

python网络爬虫之requests模块 随笔 第10张

在线JSON校验格式化工具:http://www.bejson.com/

 python网络爬虫之requests模块 随笔 第11张

 

 

 

4.基于requests模块ajax的post请求:

python网络爬虫之requests模块 随笔 第12张 需求:破解百度翻译

ajax动态加载数据抓包查看方法

如果是Content-Type:application/json,可以obj_json = response.json() #json()返回的就是对象类型的响应数据

python网络爬虫之requests模块 随笔 第13张

 

python网络爬虫之requests模块 随笔 第14张

python网络爬虫之requests模块 随笔 第15张
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import requests
import urllib.request
if __name__ == "__main__":

    #指定ajax-get请求的url(通过抓包进行获取)
    url = 'https://movie.douban.com/j/chart/top_list?'

    #定制请求头信息,相关的头信息必须封装在字典结构中
    headers = {
        #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
    }

    #定制get请求携带的参数(从抓包工具中获取)
    param = {
        'type':'5',
        'interval_id':'100:90',
        'action':'',
        'start':'0',
        'limit':'20'
    }
    #发起get请求,获取响应对象
    response = requests.get(url=url,headers=headers,params=param)

    #获取响应内容:响应内容为json串
    print(response.text)
    movie_list = response.json()
    print(movie_list) #y以json格式拿取列表里嵌套着字典,每个字典是一电影的详情

    all_names = []
    for dic in movie_list:
        print(dic)
        name = dic['title']
        all_names.append(name)

    print(all_names)
需求:爬取豆瓣电影分类排行榜的电影名称 python网络爬虫之requests模块 随笔 第17张
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import requests
import urllib.request

if __name__ == "__main__":

    #指定ajax-post请求的url(通过抓包进行获取)
    url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'

    #定制请求头信息,相关的头信息必须封装在字典结构中
    headers = {
        #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
    }

    #定制post请求携带的参数(从抓包工具中获取)
    data = {
        'cname':'',
        'pid':'',
        'keyword':'北京',
        'pageIndex': '1',
        'pageSize': '100'
    }
    #发起post请求,获取响应对象
    response = requests.post(url=url,headers=headers,data=data)

    #获取响应内容:响应内容为json串
    print(response.text)
需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据

 

5.综合练习:

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄