爬虫必备Requests的扩展包总结

网站建设3年前发布
37 0 0

Requests-Cache模块是requests模块的一个扩展功能,用于为requests模块提供持久化缓存支持。如果requests模块向一个URL发送重复请求时,Requests-Cache模块将会自动判断当前的网络请求是否产生了缓存。如果已经产生了缓存,就会从缓存中读取数据作为响应内容。如果没有缓存就会向服务器发送网络请求,获取服务器所返回的响应内容。使用Requests-Cache模块可以减少网络资源避免重复请求的次数,这样可以变相地躲避一些反爬机制。,无论是否使用了Anaconda,都需要单独安装Requests-Cache模块,因为Anaconda中并不包含该模块。,调用install_cache()函数实现Requests-Cache的请求,语法格式如下:,Install_cache()函数中包含了多个参数,每个参数的含义如下:,在使用install_cache()函数实现请求缓存时,一般情况下时不需要单独设置任何参数的,只需要使用默认参数即可。判断是否存在缓存的代码如下:,程序运行结果如下:,针对反爬措施,在多次请求中设置延时是不错的选择。但是如果在第一次请求后生成了缓存,那么第二次请求时就无需设置延时,为此Requests-Cache模块可以使用自定义钩子函数的方式,合理判断是否需要设置延时操作。示例代码如下:,程序运行结果:,从以上的运行结果看,通过配置钩子函数可以实现:在第一次请求时,因为没有请求缓存所以执行了2秒等待延时;第二次请求时则没有执行2秒 延时,并输出是否存在请求缓存行为True。,Requests-Cache模块支持4种不同的存储机制,分别为money、sqlite、mongoDB以及redid,具体说明如下:,使用Requests-Cache模块指定缓存不同的存储机制时,只需要为install_cache()函数中backend参数赋值即可,设置方式如下:,设置存储机制为mongoDB与redis数据库时,需要提取安装对应的操作模块与数据库。安装模块的命令如下:,Requests-HTML 模块是requets模块的亲兄弟,是同一个开发者所开发的。Requests-HTML模块不仅包含了requests模块中的所有功能,还增加了对JavaScript的支持、数据提取以及模拟真实浏览器等功能。,(1) get()请求,通过'pip install requests-html'命令进行模块的安装,然后导入Requests-HTML模块中的HTMLSession类,接着需要创建HTML会话对象,通过会话实例进行网络请求的发送,示例代码如下:,程序运行结果如下:,(2) post()请求,在实现网络请求时,POST请求也是一种比较常见的请求方式,使用Requests-HTML实现POST请求与requests的实现方法类似都需要单独设置表单参数data,不过它也是需要通过会话实例进行网络请求的发送,示例代码如下:,程序运行结果如下:,从以上的运行结果中,不仅可以看到form所对应的表单内容,还可以看到User-Agent所对应的值,并不是像requests模块发送网络请求时返回的默认值(python-requests/2.27.1),而是一个真实的浏览器请求头信息,这与requests模块所发送的网络请求有着细小的改进。,(3) 修改请求头信息,说到请求头信息,Requests-HTML模块是可通过指定headers参数来对默认的浏览器请求头信息进行修改的,修改请求头信息的关键代码如下:,§ Requests-HTML模块中添加了UserAgent类,使用该类可以实现随机生成请求头。示例代码如下:,程序运行结果如下:,备注:,以上运行是在Anaconda的Jupiter notebook 下运行。Pycharm 报错,应该是解释器的问题。,以往使用requests模块实现爬虫程序时,还需要为其配置一个解析HTML代码的搭档。Requests-HTML模块对此进行了一个比较大的升级,不仅支持CSS选择器还支持XPath的节点提取方式。,CSS选择器中需要使用HTML的find()方法,该方法中包含5个参数,其语法格式与参数含义如下:

© 版权声明

相关文章