python爬虫

本文介绍了Python爬虫的基础知识,包括爬虫的概念、浏览网页的过程、URL的含义、环境配置和requests库的使用,详细讲解了GET、POST请求、Cookies、超时配置、会话对象和SSL证书验证,并给出了实战案例。
摘要由CSDN通过智能技术生成

目录

概念

1、什么是爬虫

2. 浏览网页的过程

3.URL 的含义

4. 环境的配置

安装

引入

基本请求

基本 GET 请求

基本 POST 请求

Cookies

超时配置

会话对象

SSL 证书验证

代理

 实战

完整代码


概念

1、什么是爬虫

爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。

2. 浏览网页的过程

在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 百度图片-发现多彩世界 ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过 DNS 服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML、JS、CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了。 因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片、文字等资源的获取。

3.URL 的含义

URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL 的格式由三部分组成: ①第一部分是协议 (或称为服务方式)。 ②第二部分是存有该资源的主机 IP 地址 (有时也包括端口号)。 ③第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的 URL 才可以获取数据,因此,它是爬虫获取数据的基本依据,准确理解它的含义对爬虫学习有很大帮助。

4. 环境的配置

学习 Python,当然少不了环境的配置,最初我用的是 Notepad++,不过发现它的提示功能实在是太弱了,于是,在 Windows 下我用了 PyCharm,在 Linux 下我用了 Eclipse for Python。

安装

利用 pip 安装

1
$ pip install requests

或者利用 easy_install

1
$ easy_install requests

通过以上两种方法均可以完成安装。

引入

首先我们引入一个小例子来感受一下

1
2
3
4
5
6
7
8
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 等内容。 运行结果如下

1
2
3
4
<class 'requests.models.Response'>
200
UTF-8
<RequestsCookieJar[]>

怎样,是不是很方便。别急,更方便的在后面呢。

基本请求

requests 库提供了 http 所有的基本请求方式。例如

1
2
3
4
5
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 方法

1
r = requests.get("http://httpbin.org/get")

如果想要加参数,可以利用 params 参数

1
2
3
4
5
import requests

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print r.url

运行结果

1
http://httpbin.org/get?key2=value2&key1=value1

如果想请求 JSON 文件,可以利用 json () 方法解析 例如自己写一个 JSON 文件命名为 a.json,内容如下

1
2
3
["foo", "bar", {
  "foo": "bar"
}]

利用如下程序请求并解析

1
2
3
4
5
import requests

r = requests.get("a.json")
print r.text
print r.json()

运行结果如下,其中一个是直接输出内容,另外一个方法是利用 json () 方法解析,感受下它们的不同

1
2
3
4
["foo", "bar", {
 "foo": "bar"
 }]
 [u'foo', u'bar', {u'foo': u'bar'}]

如果想获取来自服务器的原始套接字响应,可以取得 r.raw 。 不过需要在初始请求中设置 stream=True 。

1
2
3
4
5
r 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值