爬虫:模拟登录、会话维持、cookie登录、代理、禁止重定向、超时处理、重试
import requests
from requests.exceptions import RequestException
from retrying import retry
@retry
def get_page(url, headers=None, proxies=None, allow_redirects=False, timeout=10):
try:
response = requests.get(url, headers=headers, proxies=proxies, allow_redirects=allow_redirects, timeout=timeout)
if response.status_code == 403: # 如果返回403,尝试使用cookies登录
response = login_using_cookies()
response.raise_for_status() # 如果响应不是200,抛出异常
return response.text
except RequestException as e:
print(f"请求出错: {e}")
raise retry # 如果发生异常,重试
def login_using_cookies():
# 这里应该是登录逻辑,获取cookies,并返回包含cookies的response对象
# 假设已经实现了login函数,它返回登录后的session对象
session = login()
return session.get(url) # 使用登录后的session发起请求
def login():
# 登录逻辑实现
pass
# 使用示例
headers = {'User-Agent': 'your_user_agent'}
proxies = {'http': 'your_proxy_http', 'https': 'your_proxy_https'}
url = 'http://yourtarget.com'
page_content = get_page(url, headers, proxies)
print(page_content)
这个示例代码展示了如何使用Python的requests库编写一个简单的爬虫,它模拟登录、使用代理、禁用重定向、处理超时和实现重试逻辑。在实际应用中,登录逻辑需要根据目标网站的实际情况来实现,并且代理和cookie的处理也应该根据实际情况来设置。
评论已关闭