【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用

广东职业技术学院  欧浩源 2017-10-15 

1、引言

实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源发起请求。urllib是目前最常用的做法,然而Requests会比urlib更加方便,能够让人以更加简单的方式获取网络资源。

2、什么是Requests?

Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。
    Requests对象有Get、Post、Put、Delete、Head、Options等HTTP方法,使用起来非常简单。对于WEB系统,一般只支持Get和Post方法。在网络爬虫中,Get方法最常用。在本文中也重点讨论该方法相关的应用,其他方法即更加详细的使用,见用户手册:
    http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

3、发起网络请求

使用RequestsGet方法发送网络请求非常简单
    首先,导入Requests模块:
    import requests
    然后,通过URL向网页发起请求:
    res = requests.get('http://www.gdptc.cn/')
    这时,我们有一个名为res的Requests对象,从这个对象中我们可以获取所有我们想要的信息,例如将网页的URL打印出来。
    print(res.url)

4、获取响应内容

我们能读取服务器响应的内容。Requests会自动解码来自服务器的内容,大多数unicode字符集都能被无缝地解码

请求发出后,Requests会基于HTTP头部对响应的编码作出有根据的推测。当你访问res.text 之时,Requests会使用其推测的文本编码。你可以找出 Requests使用了什么编码,并且能够使用res.encoding属性来改变它

如果你改变了编码,每当你访问 res.text ,Request 都将会使用res.encoding的新值

5、响应头的内容

服务器响应头以一个Python字典的形式来表示。这个字典比较特殊,它是仅为HTTP头部而生的。
    res.headers的结果是:
{
  'Content-Length' : '39037'
  'X-Powered-By' : 'ASP.NET'
  'Date' : 'Sat, 14 Oct 2017 13:58:41 GMT'
  'X-AspNet-Version' : '2.0.50727'
  'Cache-Control' : 'private'
  'Content-Type' : 'text/html; charset=utf-8'
  'Server' : 'Microsoft-IIS/7.5'
}
    通过这个服务器的响应头,我们可以知道服务器的一些基本数据信息。根据 RFC2616, HTTP头部是大小写不敏感的。因此,我们可以使用任意大写形式来访问这些响应头字段。例如我们想查看服务器的编码和服务器型号:

6、定制请求头

如果你想为请求添加HTTP头部,只要简单地传递一个dictheaders参数就可以了。很多服务器对于非正常的请求往往会拒绝,这时候就需要给网络请求穿上合法的外衣,而伪装请求头部则是最常用的手段。
    用户代理User Agent,是HTTP协议中的一部分,属于请求头的组成部分。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核等信息的标识。通过添加合法浏览器的UA信息,可以将爬虫的请求伪装成浏览器的请求。
    例如,IE9浏览器的User Agent为:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;
    这些常用的浏览器UA在网上都可以查到。
    如果要模拟IE9浏览器访问百度网站,可以这样实现:

Requests不会基于定制 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的header信息都会被传递进去

7、小结

Requests的用法远不止此,但作为网络爬虫的入门应用,上述知识基本足够。向服务器发送请求的方法也不止一种,怎么熟悉怎么用,怎么方便怎么用,作为入门,多了解,多学习,多练习,多应用才是正道。

转载于:https://www.cnblogs.com/ALittleBee/p/7669180.html

【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用相关推荐

  1. 【网络爬虫入门01】应用Requests和BeautifulSoup联手打造的第一条网络爬虫

    [网络爬虫入门01]应用Requests和BeautifulSoup联手打造的第一条网络爬虫 广东职业技术学院 欧浩源 2017-10-14  1.引言 在数据量爆发式增长的大数据时代,网络与用户的沟 ...

  2. python六小时网络爬虫入门_一小时入门 Python 3 网络爬虫

    原标题:一小时入门 Python 3 网络爬虫 作者:Jack-Cui,热爱技术分享,活跃于 CSDN 和知乎,开设的<Python3网络爬虫入门>.<Python3机器学习> ...

  3. Python网络爬虫入门

    Python网络爬虫入门 网络爬虫(web crawler),也叫网络蜘蛛(Web Spider).网络机器人(Internet Bot).简单地说,抓取万维网(World Wide Web)上所需要 ...

  4. Python 网络爬虫笔记5 -- Beautiful Soup库实战

    Python 网络爬虫笔记5 – Beautiful Soup库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. ...

  5. Python 网络爬虫笔记3 -- Beautiful Soup库

    Python 网络爬虫笔记3 – Beautiful Soup库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程 ...

  6. Python爬虫入门四之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

  7. python爬虫学习笔记一:网络爬虫入门

    参考书目 <python网络爬虫从入门到实践>唐松 第一章 网络爬虫入门 1.1 robots协议 举例:查看京东的robots协议 京东robots协议地址 User-agent: * ...

  8. [转载]Python爬虫入门三之Urllib库的基本使用

    python爬虫系列教程http://cuiqingcai.com/1052.html 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优 ...

  9. 【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器

    [网络爬虫入门04]彻底掌握BeautifulSoup的CSS选择器 广东职业技术学院  欧浩源 2017-10-21 1.引言 目前,除了官方文档之外,市面上及网络详细介绍BeautifulSoup ...

最新文章

  1. linux 命令 grep -A -B -C 显示行选项
  2. 前端读者 | 别人写的css,你敢用吗?
  3. Android中AES256加密的实现
  4. 常用串口调试工具比较
  5. nodejs mysql access denied_Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’...
  6. java正则表达式 类_java正则表达式相关类的使用
  7. 搜索框中“请输入搜索keyword”
  8. mysql数据库咋还原_mysql数据库备份和还原
  9. CodeForces 706A Beru-taxi
  10. mysql 数据库遭遇 Loki 加密勒索病毒数据恢复
  11. 国内主流的大数据平台厂商有哪些?
  12. 速卖通尺寸表 html源码,最新!速卖通尺码表功能上线
  13. Python数据分析与挖掘——回归模型的假设检验
  14. 设计点类 Point,能够表示平面当中的任意点
  15. 香港城市大学赵翔宇招收AI机器学习数据挖掘 全奖PhD/博后/RA
  16. photoshop制作白发教程:可爱女孩黑发变白发
  17. Seo:如何搜索搜索网站热点关键词和网站长尾关键词的特点和优势
  18. 附近商家位置java开发附近定位
  19. 从概念到现状,一文读懂边缘计算
  20. html:table如何固定首行

热门文章

  1. nginx配置php 9000,Nginx支持php配置
  2. JNI----Native本地方法接口
  3. 说一下 runnable 和 callable 有什么区别?
  4. 学习笔记——本地事务ACID四大特性
  5. docker数据持久化数据卷
  6. python入门知识大全_python基础知识有哪些
  7. jspwiki mysql_Wiki.js初体验
  8. 【高并发】面试官:性能优化有哪些衡量指标?需要注意什么?
  9. 程序员进阶架构师路线
  10. Javascript对象及数组用法笔记