关于python爬虫的一些学习总结

1.概述

上一次讲了urllib库的使用,但是其中有很多的不方便,处理网页验证和Cookie时候,需要写openerhanler出咯,为了方便实现这些操作,需要有一个更加强大库,requests,它在COOkie、登陆验证、代理设置等操作十分简洁。

2. requests库基本用法

2.1 GET请求

import requests
r=requests.get('http://www.baidu.com')
print('type(r)\n',type(r))
print('code(r)\n',r.status_code)
print('text(r)\n',r.text)
print('cookie(r)\n',r.cookies)

如何添加请求的字段呢?

两种方法:

一种是get请求直接在url里面,但是这样很麻烦。

第二种是:设置一个字典,设置其健值对,然后使用params参数传给requests.get(url='',params=''),r.text()str格式,如果想直接解析返回结果,得到字典的话,可以直接调用json(方法)r.json()str格式转换为字典格式。

如何抓取二进制数据?

页面是html文档,如果抓图片视频等文件,得拿到它们的二进制码。使用r.content()方法得到二进制码,然后将其以二进制的形式写入文档。

如何添加headers?

生成一个headers字典,给其键值对赋值,然后将其加入get方法的headers参数。

2.2 POST请求

requests.post(url='',data='',headers='')

data是请求的表单数据,haeders依然是头。

如何知道请求的数据是成功的?

使用r.status_code可以获得状态码,如果得到的是200就是返回请求页面,其他的状态码其他部分可以查询网上参考。

当然响应头也可以通过r.headers得到它是一个字典,然后响应的cookie也可以通过r.cookie得到。

requests还提供内置的状态码查询对象erquests.codes可以判断请求是否成功

exit() if not r.status_code==requests.codes.ok else print('Requests successfully')

2.3 文件上传

files={'file':open('文件名’,‘rb')
r=requests.post(url='',files=files)

响应体里面会包含files这个字段,而form字段是空的,文件上传会单独有一个files字段来标识。

2.4 Cookies设置

get方式获取cookie

import requests
r=requests.get('http://www.baidu.com')
print(r.cookies)    #获取响应的cookie
for key,values in r.cookies.items():
    print(key+'='+value)

GET请求维持会话使用cookie

headers里面加入Cookie字段,就可以维持会话。

建立RequestCookieJar对象,使用复制下来的cookies利用split()方法分割cookie,然后健值对给jar设置cookie,最后加到POST方法里面。

维持同一个会话,使用session对象,就相当于打开一个新的浏览器选项卡而不是新开一个浏览器,不用每次都设置cookies

import requests

s=requests.Session()
s.get('url')
r=s.get(url)

它经常用于模拟登陆成功之后进一步的操作。

2.5 SSL证书验证

import requests
from requests.packages import urllib3

urllib3.disable_warnings()  #忽略警告的方式屏蔽警告
response=requests.get('https://www.12306.cn',verify=False)  #verify如果为TRUE会自动验证证书,我们忽略证书验证。

2.6 代理设置

大规模爬取网站会弹出验证码,导致一定时间段无法访问,所以设置代理解决这个问题,需要用到proxies参数。

import requests

proxies={
      'http':'http://user:password@ip地址'}
requests.get(url='',proxies='')

2.7 超时设置

有时候由于本机网络不好,我们等待很久才收到响应。为了防止这种情况,设置一个超时时间。增加一个timeout字段,单位为秒。永久等待设置为None或者不加参数。

2.8 身份认证

import requests
r=requests.get(url='',auth=('username','password')
print(r.status_code)

2.9 封装请求的数据结构Prepared Request

from requests import Request,Session

url=''
data={}
headers={}

s=Session()
req=Request(method='',url,data=data,headers=headers)
pre=s.prepare_request(req)
r=s.send(pre)
print(r.text)

3. 总结

requests库为常用库,一定得掌握,urllib了解就ok


 上一篇
使用python爬虫爬取猫眼电影 使用python爬虫爬取猫眼电影
1. 环境以及工具使用我们使用的是python3的requests库,requests比urllib更加的方便,同时使用正则表达式作为解析的工具。 在工具方便这次我们使用一个新的抓包工具用来对http协议的包进行分析 1.1 工具介绍Fid
2019-04-12 starjian
下一篇 
Empire-powershell渗透攻击框架工具 Empire-powershell渗透攻击框架工具
1. 工具简介Empire是一款针对windows平台的、使用Powershell脚本作为攻击载荷的渗透攻击框架工具,具有从stager生成、提权到渗透维持的一系列功能。Empire实现不需要powershell.exe就可以运行的Powe
2019-04-12 starjian
  目录