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

单元小结:

   


推荐阅读
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 探讨了 Python 中 UTF-8 编码的中文字符在某些情况下被误识别为 GB2312 的问题,并提供了详细的代码示例和环境信息。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是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社区 版权所有