热门标签 | 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个访问控制参数:

单元小结:

   


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
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社区 版权所有