def request(self, url, method, data, retry=5): resp = None while retry: retry = retry - 1 try: if method == 'GET': resp = self._sess.get(url=url, params=data, headers=self._headers, timeout=5) # 发送Get请求 elif method == 'POST': resp = self._sess.post(url=url, json=data, headers=self._headers, timeout=5) # 发送Post请求 else: raise ValueError('method参数有误') if resp.status_code == 200 and resp.content: # 若得到正常请求,则返回请求体信息 resp.encoding = 'utf-8' return resp.text except Exception as e: print('请求 {} 失败,正在尝试重新请求...'.format(url)) print(e) time.sleep(3 + random.randint(1, 10) * 0.1) # 延迟一定秒数,爬取太快容易请求失败 return ''
时间: 2024-03-31 09:32:54 浏览: 164
request获取url以及其参数
这段代码是该类的一个方法,用于向指定的URL发送HTTP请求,参数url表示请求的URL地址,参数method表示请求的方法(GET或POST),参数data表示请求的参数,参数retry表示请求失败后的重试次数(默认为5)。方法内部使用requests模块中的Session对象(即self._sess)发送HTTP请求,根据method参数的不同,使用get或post方法发送请求。其中,headers参数使用了上文提到的_user_agent属性作为请求头部信息。如果请求成功(状态码为200),则将响应体中的文本数据作为函数返回值。如果请求失败,则会在控制台输出错误信息,并在3秒到4秒之间的随机时间之后进行重试,最多重试retry次。如果所有重试都失败,则返回空字符串。
阅读全文