php网页抓取乱码不可怕主要在于你的解码方式

优采云 发布时间: 2022-08-20 02:03

  php网页抓取乱码不可怕主要在于你的解码方式

  php网页抓取乱码不可怕,主要在于你的解码方式是否正确。一般php解码存在两种方式:一种是netstat自带的txt读取类型配置,需要加代码标记。另一种则是使用代码片段实现解码。由于netstat只支持http协议的网页抓取,所以即使是多种协议互转或是处理完成后再去读取原来的网页也是可以读到一样的网页解码。

  既然php的网页抓取有自己的代码标记,那么如果要重用这个代码,那么就需要自己写插件,这就是个很繁琐的工作。而如果不使用php的代码片段,是采用代码执行的方式来模拟(假设你爬到文件只是调用了netstat的解码函数),那么由于此处代码执行是通过netstat控制台来获取文件。那么就需要处理反编译工作,比如:你采用urlretrieve()来读取一个分段的html,其中,a是代表段落标识,也可以理解为文本编码,b是一个与文件同名的函数,通过处理文件来加上对应的a字段以及段落标识。

  

  这样当你再次读取这个文件的时候,解码方式就发生变化了。再比如:你利用php转换php文件,这个代码可以由另一个以php为前缀的代码构成,需要假设这段代码经过php,再让php来处理这个文件并返回,则相当于你加了一个额外的东西到这个文件。还有,如果你正在反编译php代码来处理你的抓取请求,那么你这里要调用第三方jsp或者jspservice来执行这段代码。

  而jsp就是一个标准的页面解码程序,jspservice则可以帮你处理jsp这个页面的请求。举个例子,当你在抓取某个jsp/php页面时,得到这个页面的jspservice。jsp文件。可以执行下面的代码:namespacetest;server_ip='127。1';user_agent='mozilla/5。

  

  0(windowsnt6。1;wow64)applewebkit/537。36(khtml,likegecko)chrome/66。2914。77safari/537。36';postmessage('/api。jsp',user_agent);rewriteengineon;expose:80;//注意这里用上面的代码发送的参数来让jsp页面解码namespacetest;server_ip='127。

  1';user_agent='mozilla/5。0(windowsnt6。1;wow64)applewebkit/537。36(khtml,likegecko)chrome/65。3376。90safari/537。36';postmessage('/api。jsp',postmethod="user_agent。

  jsp",server_ip);foreach($server_ipin$server_ip){//这段代码将判断参数是否存在namespacetest。jsp。get($server_ip);rewriteengineon;expose:80;}jspservice是php代码执行的代码,他的返回值是jsp页面的解码。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线