热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第二章网络爬虫之规则21requests库

文章截图均来自中国大学moocPython网络爬虫与信息提取的教程,以上仅作为我的个人学习笔记。下面是教程链接:https:www.icourse16

文章截图均来自中国大学mooc Python网络爬虫与信息提取的教程,以上仅作为我的个人学习笔记。

下面是教程链接:https://www.icourse163.org/learn/BIT-1001870001?tid=1450316449#/learn/content?type=detail&id=1214620493&cid=1218397635&replay=true

2-1首先是Request库


  • 当前公认的爬取网页最好的第三方库。

安装方法:

  • 注意一点首先安装的时候一定要点 add into path ,要不然需要手动配置系统环境变量
  • 只有配置好环境变量之后,才可以通过windows cmd 控制台 管理员身份安装 requests库。

pip install requests //直接键入这行代码,就可以 在线下载安装;

安装截图:

测试是否安装成功:

>>> import requests
>>> r = requests.get("http://www.baidu.com")
>>> r.status_code
200
>>> r.encoding ='utf-8'
>>> r.text

  • 首先导入requests库
  • 接着用requests.get(url)的方法获取指定的网页界面信息
  • status_code表示获取的状态:200表示获取的比较成功,404表示失败
  • 使用encoding = 'utf-8' 来修改网页的编码格式
  • text是以文本的方式输出网页的源代码

测试结果:

展开介绍requests库的几个主要方法:

最常用方法:r = requests.get(url): r是一个Response对象,它包含从服务器返回的所有的相关资源

完整的参数信息:request.get(url,params=None,**kwargs)

其中:url是目标网页路径,params是url中的额外参数,字典或者字节流格式,**kwargs:12个控制访问的参数,也是可选的。

          

注意:如果charset里面没有指定编码格式,那么就猜测是'ISO-8859-1' ,这个是不能识别中文的,我们需要分析出之后再使用

爬取网页的通用代码框架:

有时候网络连接可能出现错误,所以这样的的语句的异常处理是必要的,request库支持6中网络连接异常

import requestsdef getHTMLText(url):try:r = requests.get(url,timeout=30)r.raise_for_status() #如果状态不是200,那么会引发HTTPError异常r.encoding = r.apparent_encodingreturn r.textexcept:return "产生异常"if __name__ == "__main__":url = "www.baidu.com" #加上http才是对的print(getHTMLText(url))

http协议和request库的主要方法:(hypertext transfer protocol)超文本传输协议 是基于请求和响应模式的、无状态的协议(两次请求之间没有关联)

    

      

使用head方法可以使用很少的网络流量获取网络资源的概要信息。

也可以使用post方法向服务器提交新增数据

>>> r = requests.head('http://httpbin.org/get')
>>> r.headers
{'Date': 'Mon, 25 May 2020 00:59:16 GMT', 'Content-Type': 'application/json', 'Content-Length': '306', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'}
>>> r.text
''
>>> payload = {'key1':'value1','key2':'value2'}
>>> r = requests.post('http://httpbin.org/post',data = payload)
>>> print(r.text)
{"args": {}, "data": "", "files": {}, "form": {"key1": "value1", "key2": "value2"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "23", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.23.0", "X-Amzn-Trace-Id": "Root=1-5ecb19bf-623ad90aba074ffa39e290d4"}, "json": null, "origin": "223.68.19.130", "url": "http://httpbin.org/post"
}

向url post一个字典,自动编码为form(表单),post方法会根据用户提交的信息不同,进行相关的整理

    

request方法是request库的基础方法:

  

访问控制参数:

1、params:可以将这些键值对加到url之中。

2、data:作为内容部分,可以将数据提交在url对应data位置,向服务器进行提交,可以留由以后使用。

3、json:作为内容部分,可以将数据提交在url对应json位置,向服务器进行提交,可以留由以后使用。

4、headers:修改头里面的指定字段的内容,可以模拟不同版本的浏览器先服务器发起访问,以后会用到。

5、COOKIE:从http协议中解析COOKIE,以后会用到。

6、files:可以向某一个链接提交某一个文件。

7、timeout设置超时时间。

8、proxies:代理服务器(比如此时访问百度的ip地址就是我们代理服务器的ip地址,可以有效的隐藏用户爬取网页的源ip地址,可以有效的防止对爬虫的逆追踪)可以增加用户名和密码的设置。

9、一些高级功能:现阶段暂时不会用到。

回顾13个访问控制参数:

单元小结:

   


推荐阅读
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 本文介绍了在安装或运行 Python 项目时遇到的 'ModuleNotFoundError: No module named setuptools_rust' 错误,并提供了解决方案。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文详细解析了如何使用Python语言在STM32硬件平台上实现高效的编程和快速的应用开发。通过具体的代码示例,展示了Python简洁而强大的特性。 ... [详细]
author-avatar
LD系瑰精棂_142
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有