在Python爬虫库中,设置抓取频率主要是通过控制请求头中的User-Agent和设置延迟时间来实现。以下是一些建议的步骤:
- 导入所需库:
import time import random import requests from bs4 import BeautifulSoup
- 设置User-Agent: User-Agent是HTTP请求头中的一个字段,用于表示客户端(浏览器)的类型和版本。为了模拟正常用户的浏览行为,我们需要在请求头中设置一个常见的User-Agent。
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" }
- 设置延迟时间:
为了降低被目标网站封禁的风险,我们需要在每次请求之间设置一个随机的延迟时间。这可以通过Python的
time.sleep()
函数和random.uniform()
函数来实现。
def random_delay(): time.sleep(random.uniform(1, 3)) # 设置延迟时间在1到3秒之间
- 发送请求并解析页面:
使用
requests.get()
函数发送请求,并使用BeautifulSoup库解析页面内容。
def get_page(url): response = requests.get(url, headers=headers) if response.status_code == 200: return response.text else: print(f"请求失败,状态码:{response.status_code}") return None
- 爬虫主循环:
在主循环中,我们可以使用
get_page()
函数获取页面内容,然后解析页面并提取所需信息。在每次请求之后,调用random_delay()
函数设置延迟时间。
def main(): url = "https://example.com" # 目标网址 while True: page_content = get_page(url) if page_content: soup = BeautifulSoup(page_content, "html.parser") # 解析页面内容,提取所需信息 # ... random_delay() # 设置延迟时间 if __name__ == "__main__": main()
通过以上步骤,我们可以设置爬虫的抓取频率,降低被目标网站封禁的风险。请注意,实际应用中可能需要根据目标网站的特性调整延迟时间和User-Agent。