Python服务器检测中的网站抓取

2024-05-14 15:52:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网上抓取某个网站时遇到了一个有趣的现象。使用Python的urllib2(Python 2.7)时会出现这个问题。例如:

import urllib2

LINK = "http://www.sample.com/article/1"

HEADERS = {'User-Agent': 'Mozilla5.0/...'} # Ellipsis for brevity 

req = urllib2.Request(link, data=None, headers=HEADERS)
resp = urllib2.urlopen(req, timeout=20).read()

以下是奇怪的结果:

1)当一个有效的用户代理被传递到请求头时,服务器将返回一个状态200和一个页面,说明在处理请求时出现问题(无效的html)。这意味着我能够从服务器获得一个成功的响应,其中包含损坏的数据。在

2)当传递无效的用户代理时(空头{}),服务器将超时。但是,如果超时设置为一个大值(在本例中为20秒),服务器将以缓慢的方式返回有效数据。在

当以前没有请求时,这个问题会出现在服务器上,因此我认为服务器可能期望从请求中获得某种cookie来提供有效的数据。有人知道为什么会这样吗?在


Tags: 数据sample用户import服务器http代理网站
1条回答
网友
1楼 · 发布于 2024-05-14 15:52:43

您不知道服务器端发生了什么。

你可以继续做实验,猜猜它在另一边是如何工作的。如果这是一个用户代理的问题-只要继续发送它(也许每隔一段时间更改一次)为您的所有请求,包括第一个。在

另外,我会在一个新的会话中打开chrome dev工具(匿名),并记录您正在执行的所有操作,这样您就可以看到真正的浏览器发出的请求的结构。在

相关问题 更多 >

    热门问题