爬虫概念:

网络爬虫,又称为网络蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不经常使用名字还有蚂蚁,自动索引,模拟程序或者蠕虫。


安装模块:

pip install requests


了解http定义的与服务器交互的几种方法:

get   仅仅获取资源的信息

post 一般丢在该服务器上的资源,一般我们通过form表单进行提交请求

put 增加

delete 删除


requests模块

第三方模块

传递参数:

get方式:

1
2
3
4
params  =  { 'key1' : 'hello' 'key2' : 'world' }
url  =  'https://www.jd.com'
req  =  requests.get(url  =  url, params  =  params)
print  (req.url)

结果:


https://www.jd.com?key1=hello&key2=world


post方式:

1
2
3
4
params  =  { 'key1' : 'hello' 'key2' : 'world' }
url  =  'https://www.jd.com'
req2  =  requests.post(url  =  url, data  =  params)
print  (req2.url)

结果:

https://www.jd.com

post不会再url里面做任何东西,直接在requests里面把数据打包发送出去,只接收字节类型的参数

data的类型是字典类型

包括cookie 也是key,value类型


requests 的教程:

http://docs.python-requests.org/zh_CN/latest/


requests教程的网站:

http://httpbin.org/


常用的几个方法:

req.url

req.request #是什么方法

req.headers #字典形式

req.cookies #req.cookies.keys() 和 req.cookies.values()

req.status_code

req.content #二进制显示页面前端源码

req.text #字符串显示页面前端源码(最常用)


更改请求头信息

1
2
3
4
header  =  { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36(KHTML,like Gecko) Chrome/49.0.2623.75 Safari/537.36' }
req  =  requests.get( 'https://www.qiushibaike.com/' , headers = header)
print  (r.text)
print  (r.headers)

可以通过定义一个list,然后通过random模块随机抽取一个header信息进行访问,防止反爬虫的操作。


request的会话对象

1
2
=  requests.session()
s.get(url)

所有一次会话的信息都保存在s中,只需要对s进行操作就可以了。

requests通过会话信息来获取cookie信息

Cookie的五要素:

1
2
3
4
5
name(对应key值) 
value(key值对应的value) 
domain(域名) 
path(路径) 
expires(过期时间)


cookie中的domain代表的是cookie所在的域,默认情况下就是请求的域名;

例如:请求http://www.server1.com/file/hello,那么响应中的set-Cookie默认会使用www.server1.com作为cookie的domain,在浏览器中也是按照domain来组织cookie的。

我们也可以在响应中设置cookie的domain为其他域,但是浏览器并不会去保存这些domain为其他域的cookie。

cookie中的path能够进一步的控制cookie的访问,当path=/;当前域的所有请求都可以访问到这个cookie,如果path设为其他值,比如path=/test,那么只有/test下面的请求可以访问到这个cookie。