python课件教案19_爬虫课程拓展.pptxVIP

  • 1
  • 0
  • 约3.67千字
  • 约 30页
  • 2026-03-12 发布于广西
  • 举报

爬虫课程拓展

目录requests的其他方法常见的反爬手段代理ip的检测

requests的其他方法

情景引入在访问网站的时候,有些时候我们会遇到访问提示,只需根据提示进行点击,并不影响我们正常的访问。但是如果在代码中出现这种问题,我们又该如何解决呢?

循序善诱出现这个问题的原因是:ssl的证书不安全导致SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL证书就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

思维构建importrequestsurl=/mormhweb/response=requests.get(url)ssl.CertificateError...返回证书错误,如下:在代码中发送请求

思维构建为了在代码中能够正常的请求,我们修改添加一个参数解决方案importrequests

url=/mormhweb/

#requests.packages.urllib3.disable_warnings()#不显示安全提示

response=requests.get(url,verify=False)

思维构建在上网的过程中,我们经常会遇到网络波动,这个时候,一个请求等了很久可能仍然没有结果。在爬虫中,一个请求很久没有结果,就会让整个项目的效率变得非常低,这个时候我们就需要对请求进行强制要求,让他必须在特定的时间内返回结果,否则就报错。

思维构建response=requests.get(url,timeout=3)超时参数使用方法如下:通过添加timeout参数,能够保证在3秒钟内返回响应,否则会报错

思维构建使用超时参数能够加快我们整体的请求速度,但是在正常的网页浏览过成功,如果发生速度很慢的情况,我们会做的选择是刷新页面,那么在代码中,我们是否也可以刷新请求呢?

思维构建使用retrying模块提供的retry方法通过装饰器的方式使用,让被装饰的函数反复执行retry中可以传入参数stop_max_attempt_number,让函数报错后继续重新执行,达到最大执行次数的上限,如果每次都报错,整个函数报错,如果中间有一个成功,程序继续往后执行。retrying模块的使用

思维构建importrequests

fromretryingimportretry

headers={}

#最大重试3次,3次全部报错,才会报错

@retry(stop_max_attempt_number=3)

def_parse_url(url):

#超时的时候回报错并重试

response=requests.get(url,headers=headers,timeout=3)

#状态码不是200,也会报错并重试

assertresponse.status_code==200

returnresponse

思维构建

defparse_url(url):

try:#进行异常捕获

response=_parse_url(url)

exceptExceptionase:

print(e)

#报错返回None

response=None

returnresponse同时,我们可以设置异常捕获,来获取报错信息,方便代码重新检查

常见的反爬手段

编玩边学反反爬的主要思路就是: 尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现。例如:浏览器先请求了地址url1,保留了cookie在本地,之后请求地址url2,带上了之前的cookie,代码中也可以这样去实现。

编玩边学?通过headers字段来反爬反爬原理:爬虫默认情况下没有User-Agent解决方法:请求之前添加User-Agent即可;更好的方式是使用User-Agent池来解决(收集一堆User-Agent的方式,或者是随机生成User-Agent)1、通过headers中的User-Agent字段来反爬

编玩边学2、通过referer字段或者是其他字段来反爬反爬原理:爬虫默认情况下不会带上referer字段解决方法:添加referer字段。例如在百度翻译的时候。?通过headers字段来反爬

编玩边学3、通过cookie来反爬如果目标网站不需要登录每次请求带上前一次返回的cookie,比如requests模块的session如果目标网站需要登录准备多个账号,通过一个程序获取账号对应的cookie,组成cookie池,其他程序使

文档评论(0)

1亿VIP精品文档

相关文档