当前位置:

首页 > 编程开发 > Python网络爬虫:requests库使用指南

Python网络爬虫:requests库使用指南

1.什么是网络爬虫简单来说,就是构建一个程序,以自动化的方式从网络上下载、解析和组织数据。就像我们浏览网页的时候,对于我们感兴趣的内容我们会复制粘贴到自己的笔记本中,方便下次阅读浏览——网络爬虫帮我们自动完成这些内容当然如果遇到一些无法复制粘贴的网站——网络爬虫就更能显示它的力量了为什么需要网络爬虫当我们需要做一些数据分析的时候——而很多时候这些数据存储在网页中,手动下载需要花费的时间太长,这时候我们就需要网络爬虫帮助我们自动爬取这些

本文目录

    1. 什么是网络爬虫

    简单来说,就是构建一个程序,以自动化的方式从网络上下载、解析和组织数据。

    就像我们浏览网页的时候,对于我们感兴趣的内容我们会复制粘贴到自己的笔记本中,方便下次阅读浏览——网络爬虫帮我们自动完成这些内容

    当然如果遇到一些无法复制粘贴的网站——网络爬虫就更能显示它的力量了

    为什么需要网络爬虫

    当我们需要做一些数据分析的时候——而很多时候这些数据存储在网页中,手动下载需要花费的时间太长,这时候我们就需要网络爬虫帮助我们自动爬取这些数据来(当然我们会过滤掉网页上那些没用的东西)

    网络爬虫的应用

    访问和收集网络数据有十分广泛的应用,其中很多属于数据科学领域 我们来看看下面这些例子:

    淘宝网的卖家需要从海量的评价中寻找到有用的正面的和反面的信息,来帮助他进一步抓住顾客的心,分析顾客的购物心理有学者在twitter、微博等社交媒体上爬取信息来构建一个数据集,从而建立一个识别抑郁症和自杀念头的预测模型——让更多需要援助的人得到帮助——当然我们也需要考虑到隐私相关的问题——但这很酷不是吗?

    作为一名人工智能工程师,他们从Ins上爬取志愿者所展示的喜好的图片,来训练深度学习模型,从而预测给出的图像是否会被志愿者所喜好——手机制造商将这些模型纳入他们的图片应用程序中,推送给你。电商平台的数据科学家爬取用户浏览商品的信息,进行分析和预测,以便推送给用户他最想要了解和购买的商品

    是的!网络爬虫的应用十分广泛,小到我们日常用来批量爬取一些高清的壁纸,图片;大到人工智能、深度学习、商业策略制定的数据来源等。

    这个时代是数据的时代,数据就是“新石油”

    2. 网络传输协议HTTP

    没错,讲到网络爬虫一定绕不开的就是这个HTTP,当然我们不需要像网络工程师那样详细的了解协议定义的方方面面,但是作为入门我们还是得具有一定的认识才行

    国际标准化组织ISO维护了开放式通信系统互联参考模型OSI,而该模型将计算机通信结构分为七层

    1. 物理层:包括以太网协议、USB协议、蓝牙协议等

    2. 数据链路层:包含以太网协议

    3. 网络层:包含IP协议

    4. 传输层:包含TCP、UDP协议

    5. 会话层:包含用于打开/关闭和管理会话的协议

    6. 表示层:包含保护格式还和翻译数据的协议

    7. 应用层:包含HTTP和DNS网络服务协议

    现在来看看HTTP请求和响应是什么样子的(因为后面会涉及自定义请求头) 一般请求消息由一下内容构成:

    • 请求行

    • 多个请求头

    • 空行

    • 可选的消息主体

    具体的请求消息:

    GET https://www.baidu.com/?tn=80035161_1_dg HTTP/1.1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-GB;q=0.5,en;q=0.3
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
    Accept-Encoding: gzip, deflate, br
    Host: www.baidu.com
    Connection: Keep-Alive

    这个是访问百度时的请求,当然里面的很多细节我们也不需要知道,因为python的request包会帮助我们完成我们的爬取

    当然我们也能查看网页对我们的请求返回的信息:

    HTTP/1.1 200 OK //这边的状态码为200表示我们的请求成功
    Bdpagetype: 2
    Cache-Control: private
    Connection: keep-alive
    Content-Encoding: gzip
    Content-Type: text/html;charset=utf-8
    Date: Sun, 09 Aug 2020 02:57:00 GMT
    Expires: Sun, 09 Aug 2020 02:56:59 GMT
    X-Ua-Compatible: IE=Edge,chrome=1
    Transfer-Encoding: chunked

    3. requests库(不喜欢理论知识的同学们可以直接来这里哦)

    我们知道其实python还预置了另外的处理HTTP的库——urllib和urllib3,但是requests库学起来更容易——代码更简洁易懂。 当然当我们成功爬取下网页时,将要将里面我们感兴趣的东西提取出来的时候, 我们会提到另一个十分有用的库——美丽汤(Beautiful Soup)——这又是后话了

    1. requests库的安装

    这里我们可以直接找到requests的.whl文件安装,也可以直接使用pip来安装(当然如果有pycharm的同学可以直接从里面的环境加载中下载)

    2. 实战

    下面我们开始正式爬取网页

    代码如下:

    import requests
    target = 'https://www.baidu.com/'
    get_url = requests.get(url=target)
    print(get_url.status_code)
    print(get_url.text)

    输出结果

    200 //返回状态码200表示请求成功
    //这里删除了很多内容,实际上输出的网页信息比这要多得多
     
    
     
    

     
     
     
      

    上面五行代码做了很多事情,我们已经可以将网页的HTML内容全部抓取

    第一行代码:加载requests库 第二行代码:给出需要爬取的网站 第三行代码:使用requests进行请求 一般的格式如下:

    对象 = requests.get(url=你想要爬取的网站地址)

    第四行代码:返回请求的状态码 第五行代码:输出相应的内容主体

    当然我们还可以打印更多的内容

    import requests
    
    target = 'https://www.baidu.com/'
    get_url = requests.get(url=target)
    # print(get_url.status_code)
    # print(get_url.text)
    print(get_url.reason)//返回状态
    print(get_url.headers)
    //返回HTTP响应中包含的服务器头的内容(和上面展示的内容差不多)
    print(get_url.request)
    print(get_url.request.headers)//返回请求中头的内容
    OK
    {'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 
    'Connection': 'keep-alive', 
    'Content-Encoding': 'gzip', 
    'Content-Type': 'text/html', 
    'Date': 'Sun, 09 Aug 2020 04:14:22 GMT',
    'Last-Modified': 'Mon, 23 Jan 2017 13:23:55 GMT', 
    'Pragma': 'no-cache', 
    'Server': 'bfe/1.0.8.18', 
    'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}
    
    {'User-Agent': 'python-requests/2.22.0', 
    'Accept-Encoding': 'gzip, deflate', 
    'Accept': '*/*', 
    'Connection': 'keep-alive'}
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    上一篇: Java内存模型的作用是什么?
    下一篇: Java如何实现方法调用日志记录?
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    Python爬取网页的详细步骤与代码实例教程
    Python爬取网页的详细步骤与代码实例教程

    一份结构清晰、注重实操的Python爬取网页详细教程,涵盖环境搭建、HTTP请求发送、HTML解析、数据持久化存储与异常处理等完整步骤与代码实例。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。