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

     一、requests模块

    requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。

    1.1 模块介绍及请求过程

    requests模块模拟浏览器发送请求

    请求流程:指定url --> 发起请求 --> 获取响应对象中存储的数据 --> 持久化存储

    1.2 爬取百度首页

    #!/usr/bin/env python
    # -*- coding:utf-8-*-
    
    import requests
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
    }
    url = 'https://www.baidu.com/'
    
    response = requests.get(url=url)
    response.encoding = 'utf-8'                         # 修改字符编码
    page_text = response.text                           # 获取的类型为字符型<class 'str'>
    
    with open('./baidu.html', mode='w', encoding='utf-8') as f:
        f.write(page_text)
    
    # page_text = response.content                       # 返回二进制数据类型 <class 'bytes'>
    # response.status_code                               # 获取响应状态码
    # response.headers['Content-Type'] == 'text/json'    # 类型是 'text/json' 则可以使用response.json方法
    # response.json                                      # 如果响应头中存储了json数据,该方法可以返回json数据

    1.3 爬取百度指定词条搜索后的页面数据

    #!/usr/bin/env python
    # -*- coding:utf-8-*-
    import requests
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
    }
    url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&'
    kw = input('请输入要搜索的内容:')
    param = {'wd': kw}
    response = requests.get(url=url, params=param, headers=headers)
    
    page_text = response.content
    fileName = kw+'.html'
    with open(fileName, 'wb') as fp:
        fp.write(page_text)
        print(fileName+'爬取成功。')

    1.4 获取百度翻译的翻译结果使用post方法

    页面使用的ajax的请求方式,通过浏览器抓包得到请求的地址和提交From表单的内容。

    #!/usr/bin/env python
    # -*- coding:utf-8-*-
    
    import requests
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
    }
    url = 'https://fanyi.baidu.com/sug'
    
    kw = input('请输入要翻译的内容:')
    data = {
        'kw': kw
    }
    response = requests.post(url=url, data=data, headers=headers)
    dic = response.json()
    print(dic['data'])
    -----------------------------------执行结果-------------------------------------- 请输入要翻译的内容:美女 [{'k': '美女', 'v': '[měi nǚ] beauty; belle; beautiful woman; femme fat'}, {'k': '美女与野兽', 'v': '名 Beauty and the Beast;'}, {'k': '美女蛇', 'v': 'merino;'}] --------------------------------------------------------------------------------

     1.5 爬取豆瓣电影排名电影

    #!/usr/bin/env python
    # -*- coding:utf-8-*-
    
    import requests
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
    }
    
    url = 'https://movie.douban.com/j/chart/top_list'
    
    param = {
        'type': '5',
        'interval_id': '100:90',
        'action': '',
        'start': '0',
        'limit': '20'
    }
    
    json_data = requests.get(url=url, headers=headers, params=param).json()
    
    print(json_data)

  • 相关阅读:
    Excelpackage的简单使用(导出用户信息并保存)
    set nocount on/off的作用,可配合存储过程使用
    在sql中case子句的两种形式
    C#开发微信门户及应用(1)--开始使用微信接口(转)
    张建总的一封信
    Jquery在线工具
    《EnterLib PIAB深入剖析》系列博文汇总 (转)
    微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART1——为什么要使用Unity? (转)
    结合领域驱动设计的SOA分布式软件架构 (转)
    ENode框架旨在帮助我们开发ddd,cqrs、eda和事件采购风格的应用程序。(netfocus 汤雪华)
  • 原文地址:https://www.cnblogs.com/cyleon/p/10577791.html
Copyright © 2011-2022 走看看