如何抓取网页数据(我另外一个博客中有一个 )

优采云 发布时间: 2021-09-28 12:19

  如何抓取网页数据(我另外一个博客中有一个

)

  有一个我自己写的源代码,用于在另一个博客中抓取其他网页。调试的时候没有问题,发布一段时间后内容也没有问题,但是突然发现爬虫功能不行了。右键查看源文件,看到获取的数据是空的。

  我查看了我的源代码并在服务器上调试了几次。我什至重新抓包,查看了对方的网站数据。

  一开始以为是我服务器的IP被对方服务器屏蔽了,于是把源码发给另一个朋友调试,发现不是这个原因。

  然后我怀疑对方是不是更新了算法,加密了程序,但是我在源码中对获取数据的模块变量做了echo输出,然后才发现获取的数据是乱码。

  

  第一眼看到乱码,还以为是对方的开发者加密了数据,于是放弃了几天。

  今天在源码中尝试对获取到的数据进行字符集转换,但是不管怎么转换,都是乱码。

  找了一天,终于在C#程序员里面写了一个idea。

  原来问题出在我的帖子的标题数据中。我在源代码中添加了一行'Accept-Encoding:gzip, deflate, br'。删除后问题解决,因为是gzip压缩导致的乱码。

  $cars = $GLOBALS['ua'];

$header = array(

"POST {$ii} HTTP/2.0",

"Host: {$web} ",

"filename: {$id} ",

"Referer: {$ii} ",

"Content-Type: text/html",

'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5,application/signed-exchange;v=b3',

'Accept-Encoding:gzip, deflate, br',

'Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',

'Connection:keep-alive',

"Cookie: {$cars[1]}",

"User-Agent: {$cars[0]}",

"X-FORWARDED-FOR:180.149.134.142",

"CLIENT-IP:180.149.134.142",

);

echo "header: {$header[0]}

{$header[1]}

{$header[2]}

{$header[3]}

{$header[4]}

{$header[5]}

{$header[6]}

{$header[7]}

{$header[8]}

{$header[9]}

{$header[10]}

{$header[11]}

{$header[12]}

{$header[13]}

";

return $header;

  通过删除以下行来解决问题。

  'Accept-Encoding:gzip, deflate, br',

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线