php 网页抓取(php网页抓取怎么做?序列化和反序列?)
优采云 发布时间: 2022-01-15 13:02php 网页抓取(php网页抓取怎么做?序列化和反序列?)
php网页抓取,主要用requests库对http请求做处理,requests可以*敏*感*词*请求,通过requests.get得到请求url,然后再利用requests.post将请求提交到服务器,不仅仅可以抓取http请求,php本身也提供了很多用来抓取其他协议的方法,比如json方法,哈希函数方法,fileinputstream方法等等。
requests抓取网页比较简单,跟selenium等方法差不多,安装也简单,只要输入正确的url就可以得到服务器返回的响应结果,所以用起来非常简单。而且requests可以直接抓取网页中的json对象,但是在一些具体操作上selenium是无法完成的,比如:请求响应的格式要存储怎么办。不知道大家遇到没有这个问题,比如java里面的序列化类型,如果有的话那么selenium就没法用了,虽然java本身不提供序列化功能,但是requests提供了序列化这个功能。
不仅仅是局限于json数据格式,动态数据也是可以序列化的,比如在python里面要传输文件就需要将文件转为json格式。python序列化和反序列化的方法其实很简单,借助webdriver.driver()就可以实现。什么意思呢?打个比方,比如我们想要模拟登录,并且获取验证码,然后再加上准备好的密码等数据。
很简单,登录,获取验证码,传送加密密码,登录,获取验证码等操作,都有现成的方法,cookie或者直接通过浏览器,urllib等都可以实现。这里我们用的是cookie方法来完成,在python里面你要先将整个网页拷贝一份,然后用cookie来保存一份,那么requests库就可以实现。在python的代码中已经封装好了,如果需要封装为自己的,那么可以自己定义一下就可以了。
还是那句话,ide免不了要写注释,有些注释实在太啰嗦就可以去掉,这里用一个列表来作为代码注释:622324252627282933637383944647485565758596061626364webdriver.webdriver.driver().desire_for_scripting()要注意的是,desire_for_scripting方法没有必要进行实现,完全可以自己手写的,那么就使用ide来做到完全的转义,然后用bytes来保存就可以了。
为什么要用bytes呢?一来bytes更加简单,二来万一有文件加密的需求,直接反序列化就可以反序列化了。接下来我们先看看传统的方法是如何处理的,我在网上查了一下,我根据google的网页抓取规范写了下面这段代码,#google网页抓取规范,应该是针对.github/awesome-python做的总结,可以进行查阅参考::#webdriver.forward()#将请求合并为一个请求#1.requests。