当涉及到反爬虫时,我们需要设计一些策略和技术来防止恶意爬虫访问我们的网站。以下是一个简单的反爬虫框架示例,供您参考:
import requests
from bs4 import BeautifulSoup
import timeclass AntiScrapingFramework:def __init__(self, target_url):self.target_url = target_urlself.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}self.session = requests.Session()def fetch_page(self):try:response = self.session.get(self.target_url, headers=self.headers)if response.status_code == 200:return response.textelse:print(f"Failed to fetch page. Status code: {response.status_code}")return Noneexcept requests.RequestException as e:print(f"Error fetching page: {e}")return Nonedef parse_page(self, html_content):soup = BeautifulSoup(html_content, 'html.parser')# Extract relevant data from the page# ...def run(self):html_content = self.fetch_page()if html_content:self.parse_page(html_content)else:print("Page fetch failed. Exiting...")if __name__ == "__main__":target_url = "https://example.com"anti_scraping_framework = AntiScrapingFramework(target_url)anti_scraping_framework.run()
这个简单的框架包含以下几个关键点:
- 设置 User-Agent:在请求头中设置合适的 User-Agent,模拟浏览器访问,避免被识别为爬虫。 使用
- Session:使用 Session 对象来保持会话状态,包括 cookie 等信息。
- 随机延迟:在请求之间添加随机延迟,避免频繁请求被封 IP。 解析页面:使用 Beautiful Soup等库解析页面,提取所需数据。
请注意,这只是一个简单的示例,实际的反爬虫框架可能需要更复杂的策略,例如验证码处理、IP
代理池、请求头随机化等。根据实际需求,您可以进一步完善这个框架。