zoukankan      html  css  js  c++  java
  • python爬虫之requests模块

    引入

    什么是requests模块

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

    为什么使用requess模块

    因为在使用urllib模块的时候,会有诸多不便之处,总结如下:

    • 手动处理url编码
    • 手动处理post请求参数
    • 处理cookie和代理操作繁琐

    使用requests模块:

    • 自动处理url编码
    • 自动处理post请求参数
    • 简化cookie和代理操作
    安装requests模块
    pip install requests
    
    需求:爬取搜狗指定词条搜索后的页面数据
    ###需求 爬取搜狗中指定词条搜搜后的页面数据
    import requests
    
    url ='https://www.sogou.com/'
    word = input('enter a word')
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:65.0) Gecko/20100101 Firefox/65.0'
    }
    params = {
        'query':word,
        'ie':'utf-8'
    }
    souguo_list=requests.get(url=url,headers=headers,params=params).text
    print(souguo_list)
    
    with open('./souguo.html','w',encoding='utf-8') as fp:
        fp.write(souguo_list)
    print('over')
    
    
    请求载体身份标识的伪装:

    User-Agent:请求载体身份标识,通过浏览器发起的请求,请求载体为浏览器,则该请求的User-Agent为浏览器的身份标识,使用爬虫程序发起的请求,则该请求的载体为爬虫程序

    反爬机制:某些网站会对访问该网站的请求中的User-Agent来进行捕获和判断,如果该请求的UA为爬虫程序,则拒绝向该请求提供数据

    反反爬策略:将爬虫程序的UA伪装成某一款浏览器的身份标识

    需求:爬取豆瓣电影分类排行榜https://movie.douban.com/中的电影详情数据
    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)
    
  • 相关阅读:
    Springboot(一)springboot简介与入门程序
    Java基础(二)流程语句与数组
    Java基础(一)基础常识
    Kubernetes介绍
    K8s 存储
    Kubernetes 集群组件
    Kubernetes 设计理念
    Kubernetes 部署与实战
    容器技术与资源隔离
    Docker 网络配置
  • 原文地址:https://www.cnblogs.com/mlhz/p/10462649.html
Copyright © 2011-2022 走看看