Python爬虫--使用 Requests 获取网页

requests包用于获取网站的内容,使用HTTP协议,基于urllib3实现。其官方中文文档为:Requests: HTTP for Humans

requests的基本使用方法很简单,这里记录一些最常用的方法,完整的介绍见其官方文档,以下介绍基于Python 3.5。

使用requests首先需要导入它:

import requests

发送请求

最基本的方法是GET请求:

url = 'http://www.zju.edu.cn/'``r = requests.get(url)

返回的r是一个Response类对象,包含所有返回数据,可以从这个Response中提取所需的信息。

除了get()外,常用的请求还有post(),用法完全相同。除此之外requests也支持其它各种请求方法,具体参见其文档说明。

可通过r.url()获取请求的URL。

读取响应内容

使用Response的text属性即可:

r = requests.get(url)``print(r.text)

text属性是针对相应内容是文本(如HTML等)的情况下使用,如果返回的数据是二进制数据(如图片等),则通过content属性来读取二进制比特流:

r = requests.get(url)``f = open('file', 'wb')``f.write(r.content)

如果返回的数据是json,requests中自带了一个解析器,可以直接使用json()函数进行解析,返回的是一个字典:

url = 'http://ip.taobao.com/service/getIpInfo.php'``payload = {'ip': '23.91.98.188'}``r = requests.get(url, params = payload)``print(r.json()['data']['country_id'])

上面这个例子演示了淘宝的IP查询服务。

附加查询参数

可以构造类似 http://www.baidu.com/s?ie=utf-8&wd=Python 这样的查询URL,其中附加在?之后的部分就是查询参数,可以手动构造这样一个字符串,不过requests中提供了更优雅的解决方案,使用一个字典作为params参数即可:

url = 'http://www.baidu.com/s'``payload = {'wd': 'Python', 'ie': 'utf-8'}``r = requests.get(url, params = payload)

附加表单

与附加查询参数类似,在POST请求中,可以附加表单信息,这一般用于实现登录或提交信息等,使用一个字典作为data参数即可:

payload = {'username':'username', 'password':'passwd'}``r = requests.post(url, data = payload)

读取与设置响应数据的编码

一般情况下requests均能从响应头部获得正确的编码,不过若头部没有相应信息,则需要手动设置,不然可能会出错。使用Response的encoding属性即可:

r = requests.get()``f.write(r.text, encoding = r.encoding)``r.encoding = 'gb2312'``r.encdoing = 'utf-8'

使用代理

使用一个字典作为proxies参数即可,下面这段代码演示了使用ShadowSocks作为代理的方法:

proxies = {`  `'http' : 'socks5://127.0.0.1:1080',`  `'https': 'socks5://127.0.0.1:1080'``}``r = requests.get(url, proxies=proxies)

获取响应状态码

使用Response的status_code属性即可:

r = requests.get(url)``print(r.status_code)

自定义请求头部

传递一个字典作为headers参数即可:

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}``r = requests.get(url, headers = header)

会话

会话可以跨请求保持某些参数,它也会在同一个Session实例发出的所有请求之间保持cookies。使用如下方法新建一个会话:

s = requests.Session()

会话对象s具有主要的Requests API的所有方法。会话一般用于连续发起一系列请求的时候使用,它会自动处理cookies的问题,十分方便。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值