前言
之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助。入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么这一节来简单介绍一下 requests 库的基本用法。
安装
利用 pip 安装
$ pip install requests
或者利用 easy_install
$ easy_install requests
通过以上两种方法均可以完成安装。
引入
首先我们引入一个小例子来感受一下
import requests r = requests.get('http://cuiqingcai.com') print type(r) print r.status_code print r.encoding #print r.text print r.cookies
以上代码我们请求了本站点的网址,然后打印出了返回结果的类型,状态码,编码方式,Cookies等内容。
运行结果如下
<class 'requests.models.Response'> 200 UTF-8 <RequestsCookieJar[]>
怎样,是不是很方便。别急,更方便的在后面呢。
基本请求
requests库提供了http所有的基本请求方式。例如
r = requests.post("http://httpbin.org/post") r = requests.put("http://httpbin.org/put") r = requests.delete("http://httpbin.org/delete") r = requests.head("http://httpbin.org/get") r = requests.options("http://httpbin.org/get")
嗯,一句话搞定。
基本GET请求
最基本的GET请求可以直接用get方法
r = requests.get("http://httpbin.org/get")
如果想要加参数,可以利用 params 参数
import requests payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get("http://httpbin.org/get", params=payload) print r.url
运行结果
http://httpbin.org/get?key2=value2&key1=value1
如果想请求JSON文件,可以利用 json() 方法解析
例如自己写一个JSON文件命名为a.json,内容如下
["foo", "bar", { "foo": "bar" }]
利用如下程序请求并解析
import requests r = requests.get("a.json") print r.text print r.json()
运行结果如下,其中一个是直接输出内容,另外一个方法是利用 json() 方法解析,感受下它们的不同
["foo", "bar", { "foo": "bar" }] [u'foo', u'bar', {u'foo': u'bar'}]
如果想获取来自服务器的原始套接字响应,可以取得 r.raw 。 不过需要在初始请求中设置 stream=True 。
r = requests.get('https://github.com/timeline.json', stream=True) r.raw <requests.packages.urllib3.response.HTTPResponse object at 0x101194810> r.raw.read(10) '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'
这样就获取了网页原始套接字内容。
如果想添加 headers,可以传 headers 参数
import requests payload = {'key1': 'value1', 'key2': 'value2'} headers = {'content-type': 'application/json'} r = requests.get("http://httpbin.org/get", params=payload, headers=headers) print r.url
通过headers参数可以增加请求头中的headers信息
基本POST请求
对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数。
import requests 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.9.1" }, "json": null, "url": "http://httpbin.org/post" }
可以看到参数传成功了,然后服务器返回了我们传的数据。
有时候我们需要传送的信息不是表单形式的,需要我们传JSON格式的数据过去,所以我们可以用 json.dumps() 方法把表单数据序列化。
import json import requests url = 'http://httpbin.org/post' payload = {'some': 'data'} r = requests.post(url, data=json.dumps(payload)) print r.text
运行结果
{ "args": {}, "data": "{\"some\": \"data\"}", "files": {}, "form": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "16", "Host": "httpbin.org", "User-Agent": "python-requests/2.9.1" }, "json": { "some": "data" }, "url": "http://httpbin.org/post" }
通过上述方法,我们可以POST JSON格式的数据
如果想要上传文件,那么直接用 file 参数即可
新建一个 a.txt 的文件,内容写上 Hello World!
import requests url = 'http://httpbin.org/post' files = {'file': open('test.txt', 'rb')} r = requests.post(url, files=files) print r.text
可以看到运行结果如下
{ "args": {}, "data": "", "files": { "file": "Hello World!" }, "form": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "156", "Content-Type": "multipart/form-data; boundary=7d8eb5ff99a04c11bb3e862ce78d7000", "Host": "httpbin.org", "User-Agent": "python-requests/2.9.1" }, "json": null, "url": "http://httpbin.org/post" }
这样我们便成功完成了一个文件的上传。
requests 是支持流式上传的,这允许你发送大的数据流或文件而无需先把它们读入内存。要使用流式上传,仅需为你的请求体提供一个类文件对象即可
with open('massive-body') as f: requests.post('http://some.url/streamed', data=f)
这是一个非常实用方便的功能。
相关推荐
能学到什么:Python爬虫基础,requests基础,xpath数据提取。 适用人群:软件开发与爬虫学习人群,具有一定的编程技术 使用场景:爬虫学习与研究 阅读建议:此资源在于综合学习Python爬虫技术,不仅是代码编写实现也...
我们将从零开始,教你如何使用Python编写爬虫,深入花瓣网的图片海洋,批量抓取你心仪的设计资源。本手册涵盖了爬虫的基础知识、环境搭建、代码编写、数据解析、存储以及反爬机制的应对策略。通过本手册,你将学习到...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
在本案例中,我们可能会使用requests库来发送HTTP请求获取网页,然后利用BeautifulSoup或lxml解析网页内容,找到二手房源的详细信息,如房源ID、价格、面积、位置、描述等。 安居客是中国知名的房地产信息平台,其...
1. **请求处理**:使用 Python 的 `requests` 库来发送 HTTP 请求,获取网页内容。 2. **内容解析**:使用 `BeautifulSoup`、`lxml` 或 `pyquery` 等库来解析 HTML 或 XML 格式的网页内容。 3. **数据提取**:编写...
【Python 爬虫 Requests 库详解】 Requests 是 Python 中广泛使用的 HTTP 客户端库,因其简洁易用而备受青睐。它专为人类设计,是 Python 软件包中最受欢迎的一个,每天的下载量超过 400,000 次。与标准库 urllib ...
### Python爬虫入门教程知识点详解 #### 一、理解网页结构 在进行Python爬虫开发之前,首先要了解网页的基本构成。网页通常包含三个主要部分:HTML(超文本标记语言)、CSS(层叠样式表)以及JavaScript(一种常用...
接着,我们将重点探讨Python中的网络请求库,如requests。这个库可以方便地发送HTTP请求,获取网页内容。你需要学习如何设置请求头、处理cookies以及处理重定向等问题。 然后是解析HTML和XML文档。BeautifulSoup是...