25-1 request模块介绍

Posted huningfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了25-1 request模块介绍相关的知识,希望对你有一定的参考价值。

requests模块

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

  • 什么是requests模块
    • requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。
  • 为什么要使用requests模块
    • 因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
      • 手动处理url编码
      • 手动处理post请求参数
      • 处理cookie和代理操作繁琐
      • ......
    • 使用requests模块:
      • 自动处理url编码
      • 自动处理post请求参数
      • 简化cookie和代理操作
      • ......
  • 如何使用requests模块
    • 安装:
      • pip install requests
    • 使用流程
      • 指定url
      • 基于requests模块发起请求
      • 获取响应对象中的数据值
      • 持久化存储
  • 通过5个基于requests模块的爬虫项目对该模块进行学习和巩固
    • 基于requests模块的get请求
      • 需求:爬取搜狗指定词条搜索后的页面数据
    • 基于requests模块的post请求
      • 需求:登录豆瓣电影,爬取登录成功后的页面数据
    • 基于requests模块ajax的get请求
    • 基于requests模块ajax的post请求
    • 综合练习
      • 需求:爬取搜狗知乎指定词条指定页码下的页面数据

- 代码展示

  • 需求:爬取搜狗指定词条搜索后的页面数据
    import requests
    import os
    #指定搜索关键字
    word = input(enter a word you want to search:)
    #自定义请求头信息
    headers={
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/69.0.3497.100 Safari/537.36,
        }
    #指定url
    url = https://www.sogou.com/web
    #封装get请求参数
    prams = {
        query:word,
        ie:utf-8
    }
    #发起请求
    response = requests.get(url=url,params=param)
    
    #获取响应数据
    page_text = response.text
    
    with open(./sougou.html,w,encoding=utf-8) as fp:
        fp.write(page_text)

     

     

  • 需求:登录豆瓣电影,爬取登录成功后的页面数据
    import requests
    import os
    url = https://accounts.douban.com/login
    #封装请求参数
    data = {
        "source": "movie",
        "redir": "https://movie.douban.com/",
        "form_email": "15027900535",
        "form_password": "[email protected]",
        "login": "登录",
    }
    #自定义请求头信息
    headers={
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36,
        }
    response = requests.post(url=url,data=data)
    page_text = response.text
    
    with open(./douban111.html,w,encoding=utf-8) as fp:
        fp.write(page_text)

     

     

  • 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据
    #!/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)

     

     

  • 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据
    #!/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: 10
        }
        #发起post请求,获取响应对象
        response = requests.get(url=url,headers=headers,data=data)
    
        #获取响应内容:响应内容为json串
        print(response.text)
     

     

  • 需求:爬取搜狗知乎指定词条指定页码下的页面数据
    import requests
    import os
    #指定搜索关键字
    word = input(enter a word you want to search:)
    #指定起始页码
    start_page = int(input(enter start page num:))
    end_page = int(input(enter end page num:))
    #自定义请求头信息
    headers={
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36,
        }
    #指定url
    url = https://zhihu.sogou.com/zhihu
    #创建文件夹
    if not os.path.exists(./sougou):
        os.mkdir(./sougou)
    for page in range(start_page,end_page+1):
        #封装get请求参数
        params = {
            query:word,
            ie:utf-8,
            page:str(page)
        }
        #发起post请求,获取响应对象
        response = requests.get(url=url,params=params)
        #获取页面数据
        page_text = response.text
        fileName = word+_+str(page)+.html
        filePath = ./sougou/+fileName
        with open(filePath,w,encoding=utf-8) as fp:
            fp.write(page_text)
            print(爬取+str(page)+页结束)

     

     

 

以上是关于25-1 request模块介绍的主要内容,如果未能解决你的问题,请参考以下文章

requests模块

python-爬虫之requests模块介绍(登陆github)

requests模块

requests模块

requests+selenium==requestium模块介绍

Motan在服务provider端用于处理request的线程池