python爬虫分分钟搞定Requests。

目前做python爬虫有两个请求库比较常用一个是urllib 另一个是requests ,urllib的话我先前已经写过相应的博客了,但是urllib比较“原始”用起来比较麻烦,当然也比requests更难,写博客写得我有点累所以关于urllib的博客就不再更新毕竟requests功能强大也更友好方便。所以这里就花一篇博客来写一下requests怎么用。估计一篇博客就够用。
里面涉及到:请求方式,字符串解码,发送post请求传入参数,爬虫伪装,IP代理设置,cookie信息处理等。

请求方式

先说说requests有哪些方式放送请求,一个是get,一个是post。如下代码:
这里使用百度网站为例。

import requests
url='https://www.baidu.com/'
date=requests.get(url)
#data=requests.post(url)

其中post请求可以提供表单,传入用户名,密码等向服务器发送请求。
下面的cookie处理会登陆qq空间会演示到。

解码字符串

当网站返回请求的时候有两种方式
1.1 text

import requests
url='https://www.baidu.com/'
date=requests.get(url)
print(date.text)

1.2 content

import requests
url='https://www.baidu.com/'
date=requests.get(url)
print(date.content)

这里需要注意的是text返回的是已经解码好了的unicode字符串,而content则是bytes
在这里插入图片描述
因此可以按照自己的需求进行解码比如:utf-8 或者 gbk
在这里插入图片描述

传入参数(伪装(用户代理),传参)

requests要比urllib简单的多也方便的多。你可以先查看一下如图;
我们可以直接作为参数传入。
在这里插入图片描述
post和get是一样的。
所以我们可以直接传值,比如headers

import requests
url='https://www.baidu.com/'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}

date_s=requests.get(url)
date_l=requests.get(url,headers=headers)

print(len(date_s.content.decode('utf-8')))
print(len(date_l.content.

这里的话我做了一个区分一个是没有加headers的一个是加了的,我们可以发现没有加的返回过来的数据更少,其实这里是因为服务器发现了我们是一个爬虫脚本所以开了个玩笑误导我们。
有时候我们会发现目标服务器一直给我们反馈不全面或者错误与我们在浏览器界面看到的东西不一样的数据。所以这个时候我们就必须做一个伪装,就比如加入请求头。当然有时候还不够,比如爬取拉勾网的时候。
所以在构造请求头的时候可以再复杂一些,全面一些。
在这里插入图片描述

IP代理

同样也很方便。
这个多多少少大家应该是有了解的,每台电脑都有一个IP地址用于访问网络。但有时候作为一个爬虫同时爬取一个网站多次并且采用同一个IP那么这个时候就可能引起服务器怀疑是否是爬虫,那么此时可能会限制登陆。这个时候就可以采用IP代理了,即通过别人的IP来访问网站,那么就可以降低怀疑同时也可以保证安全。
1 获取IP
这个可以到各大IP网站去购买也可以使用免费的,但是不太稳定可以考虑自己搭建一个IP代理池去做。当然这只是针对大规模的采集访问,不然一般就够用了。
在这里插入图片描述
2. 使用代理
这里使用的是一个免费的代理,可能不稳。

在这里插入图片描述
好吧这个不太稳定,但是我们要使用IP代理的话只需要先设置proxy 之后在请求里面填写proxies参数即可

import requests
url='http://httpbin.org/ip'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
proxy={'http':'2121.232.144.155:9000'}
date=requests.get(url,headers=headers,proxies=proxy)
print(date.content.decode('utf-8'))

在这里插入图片描述
好了这次成功了这里注意一下我访问的是这个测试网站:http://httpbin.org/ip

cookie信息处理。

1获取cookie

import requests
url='https://www.baidu.com/'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}

date=requests.get(url,headers=headers)
#print(date.content.decode('utf-8'))
print(date.cookies.get_dict())

  1. 使用cookie(模拟演练)
    这里以登陆自己的QQ空间为例:
    在这里插入图片描述
    代码如下:


import requests
url_get_cookie='https://qzone.qq.com/'
url_qq_space='https://user.qzone.qq.com/3139541502'
date={'username':'3139541502(写自己的qq)','password':'(写自己的QQ密码)'}
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
session =requests.session()#创建session对象
session.post(url_get_cookie,data=date,headers=headers)#获取cookie
resq=session.get(url_qq_space)#访问空间
print(resq.text)
#print(session.cookies)


首先登陆qq空间是需要填写登陆,之后进入空间,而进入空间的前提是输入账号密码,这个时候会生成cookie信息证明是你自己登陆自己的空间。所以我需要获取这个信息(当然cookie信息是有时效性的)。
那么我们就需要保存cookie进行访问(相应的访问)
而requests里的session可以获取保存cookie。之后进行下一步的访问。
流程如下
在这里插入图片描述
在这里插入图片描述

处理不信任的SSL证书

有时候爬取时会报错不信任的证书,其实以前python是没有这个设置的后来的话就有了,但是一般而言不太会遇到,但有时候爬取一些xx网站可能会遇到比如
在这里插入图片描述

然后这样

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:606)>

解决方法也简单如图:
在这里插入图片描述
这里的话也说一下urllib的怎么处理。
大家注意我在这里显示出来的代码就好了。

from urllib import request
import re
import os
import ssl
context = ssl._create_unverified_context()
省略若干代码
 b = request.urlopen(url, timeout=tolerate,context = context).read().decode('gb2312', 'ignore')
省略若干代码

或者可以设置全局忽略SSL

from urllib import request
import re
import os
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
省略若干代码
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huterox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值