我有一个简单的网站爬虫,它的工作很好,但有时它卡住了,因为大的内容,如ISO图像,.exe文件和其他大的东西。使用文件扩展名猜测内容类型可能不是最好的主意。
是否可以在不获取整个内容/页面的情况下获取内容类型和内容长度/大小?
这是我的代码:
requests.adapters.DEFAULT_RETRIES = 2
url = url.decode('utf8', 'ignore')
urlData = urlparse.urlparse(url)
urlDomain = urlData.netloc
session = requests.Session()
customHeaders = {}
if maxRedirects == None:
session.max_redirects = self.maxRedirects
else:
session.max_redirects = maxRedirects
self.currentUserAgent = self.userAgents[random.randrange(len(self.userAgents))]
customHeaders['User-agent'] = self.currentUserAgent
try:
response = session.get(url, timeout=self.pageOpenTimeout, headers=customHeaders)
currentUrl = response.url
currentUrlData = urlparse.urlparse(currentUrl)
currentUrlDomain = currentUrlData.netloc
domainWWW = 'www.' + str(urlDomain)
headers = response.headers
contentType = str(headers['content-type'])
except:
logging.basicConfig(level=logging.DEBUG, filename=self.exceptionsFile)
logging.exception("Get page exception:")
response = None
是的。
您可以使用
Session.head
方法创建HEAD
请求:类似于
GET
请求的HEAD
请求,只是消息体不会被发送。这是Wikipedia的一句话:
对不起,我错了,我应该把文件看得更清楚些。答案如下: http://docs.python-requests.org/en/latest/user/advanced/#advanced(正文内容工作流)
为此使用
requests.head()
。它不会返回消息正文。如果您只对headers
感兴趣,那么应该使用head
方法。查看this link了解详细信息。相关问题 更多 >
编程相关推荐