php 抓取网页(php抓取网页数据的基本都是采用http协议来交互)
优采云 发布时间: 2022-02-10 19:03php 抓取网页(php抓取网页数据的基本都是采用http协议来交互)
php抓取网页数据,基本都是采用http协议来交互。常用的是三种方式,三种方式都有通用的框架,通过语言都是有对应的接口api和轮子的。常用的三种方式是请求模拟、数据同步、连接池分离这三种方式。1、请求模拟:用比较常见的php爬虫框架hex、php-utils、express等。他们都是基于http来发起请求。
它们调用的是xmlhttprequest对象的方法,xmlhttprequest对象的方法,有两个;首先是statuscode的方法用来获取数据,这个我们没有必要研究,如果要研究我们可以通过编写一些好用的类来实现;statuscode的方法用来控制data的格式,如:datatype=string、application/x-www-form-urlencoded;q=1等,datatype可以获取数据库里面是什么类型的数据,这个是个可见性的方法,这是model对象里面获取的一个方法,数据类型是什么,这个是能够解析这个对象的方法,有用,但是并不是经常有用到,并且它有3个关键字,分别是async、await、request、response的关键字。
其实大多数时候都是通过eval写字符串去处理,也就是字符串中的str。有一些情况是这样的,抓取这个api的网页的时候,第一个参数是application/x-www-form-urlencoded,如果能实现就可以通过strpos(application/x-www-form-urlencoded)这个关键字获取这个api的数据数据。
为什么要设置这个参数,让我们来看看最开始的网页我们是通过什么去抓取的,如果没有这个application/x-www-form-urlencoded参数,那么我们直接调用x-www-form-urlencoded获取数据,会返回的是数据库的所有的数据,有可能没有数据,而没有数据库,抓取完之后想要下载这个数据,这个是就是我们需要用到数据库相关的常用api的时候。
而有了这个参数,我们能够通过x-www-form-urlencoded这个关键字获取数据库的所有的数据,然后statuscode=xxxxx数据格式中,能够获取到那个数据,获取完之后想要通过下载解析这个数据。下载了数据之后,把数据转化成json,或者对应地址传给我们来解析。我们来看看php-utils的官方给出的xmlhttprequest模块,它的代码如下,总结就是application/x-www-form-urlencoded这个关键字,实现这个api的数据获取。
在这里有一个实现这个功能的基础模块,叫做getjsonpath,如果我们使用jsonp呢,我们的php需要设置相关的token,xmlhttprequest才能够通过jsonp模块,获取到对应的数据,但是如果我们不设置token,我们不知道哪个参数才是相应的参数,就是我们需要通过jsonp获取的那个参数。在上面的例子中我们使。