一直想学Spyder,苦于没有方向。经高人指点,总算开始了爬虫的学习。本文权当一个总结,若有不当请多指正,欢迎拍砖。
首先,写初级的爬虫程序离不开“Requests”库,import后正式开始。
一、Reuqests库的常用函数:
import Requests
requests.request() 构造一个请求,支撑一下各方法的基础方法
requests.get() 获取HTML页面的主要方法,对应HTTP的GET
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post() 向HTML提交POST请求, 。。。。。POST
requests.put() 。。。。。PUT。。 , 。。。。。PUT
requests.patch() 向HTML网页提交局部修改请求,对应PATCH
requests.delete() 。。。。。。。删除。。。。。,。。DELETE
二、Response对象
调用了上述方法后,均能让服务器响应,并返回一个Response对象。其主要属性值如下:
r. status_ code HTTP请求的返回状态, 200表示连接成功, 404表示失败
r.text HTTP响应内容的字符串形式,即, ur1对应的页面内容
r . encoding 从HTTP header中猜测的响应内容编码方式
r . apparent_ encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r. content HTTP响应内容的二进制形式
三、请求方式及其参数设置
(1)请求方式
import Requests
requests.get(url,params,**kwargs)
#url:爬取网页的链接
#params:url中的额外参数,用来生成链接
#**kwargs:访问控制参数,一共12个
这个代码就是爬虫获取网页的基本格式。
(2)params
关于params,举一个例子来说明:
能看到变化的是?wd的值,而这个值可以通过params传给url来进行处理。
借用"http://httpbin.org" 能够检查URL的各个参数,下面我们借用这个网站来观察params的设置
import requests
res=requests.get("http://httpbin.org/get?name=python&age=20") #给出参数 ?name=python&age=20
print(res.status_code)
print(res.encoding)
print(res.apparent_encoding)
res.encoding=res.apparent_encoding
print(res.text)
能看到参数被直接传进去了,下面我们用header参数来保存所有参数的值,再赋给params,看看会不会得到相同的结果
import requests
headers={'name':'python',
'age' :20
}
res=requests.get("http://httpbin.org/get",headers) #headers填到params的地方
print(res.status_code)
print(res.encoding)
print(res.apparent_encoding)
res.encoding=res.apparent_encoding
print(res.text)
运行结果如下:
能看到,是一样的。
(3)关于**kwargs
有时候有些网站并不允许python的爬虫对其网页进行浏览,只允许一些浏览器进入。此时如果只是按照一般的方法则无法爬取数据,而如果我们能将自己的spider进行伪装,就可以进入了。这就是**kwargs的作用
下面我们将自己的爬虫装做火狐浏览器来进入百度的网页。:
import requests
header={'user-agent':'Mozilla/5.0'}
res=requests.get("https://www.baidu.com/explore",headers=header) #headers填到被赋值为header
print(res.status_code) #打印连接状态码,200连通,404未连通
res=requests.get("http://httpbin.org/get",headers=header)
res.encoding=res.apparent_encoding
print(res.text)
要注意的是,kwargs必须和原来的参数值完全相同才可以改变参数(血的教训,试了很久都没试出来,最后才发现headers少打了个s)