Membina perangkak web menggunakan Python dan Redis: Cara menangani strategi anti-crawler
Pengenalan:
Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet, perangkak web telah menjadi salah satu cara penting untuk mendapatkan maklumat dan data. Walau bagaimanapun, untuk melindungi data mereka sendiri, banyak tapak web menggunakan pelbagai strategi anti-perakak, yang menyebabkan masalah untuk perangkak. Artikel ini akan memperkenalkan cara menggunakan Python dan Redis untuk membina perangkak web yang berkuasa dan menyelesaikan strategi anti perangkak biasa.
import requests from bs4 import BeautifulSoup import redis # 设置爬虫的基本参数 base_url = "https://example.com" # 待爬取的网站 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" # 设置User-Agent # 初始化Redis连接 redis_host = "localhost" # Redis主机地址 redis_port = 6379 # Redis端口号 r = redis.StrictRedis(host=redis_host, port=redis_port, db=0)
headers = { "User-Agent": user_agent }
# 从Redis中获取代理IP proxy_ip = r.srandmember("proxy_ip_pool") proxies = { "http": "http://" + proxy_ip, "https": "https://" + proxy_ip }
# 处理验证码,此处以Pillow库为例 from PIL import Image import pytesseract # 下载验证码图片 captcha_url = base_url + "/captcha.jpg" response = requests.get(captcha_url, headers=headers, proxies=proxies) # 保存验证码图片 with open("captcha.jpg", "wb") as f: f.write(response.content) # 识别验证码 captcha_image = Image.open("captcha.jpg") captcha_text = pytesseract.image_to_string(captcha_image)
from selenium import webdriver # 使用Selenium模拟浏览器访问 driver = webdriver.Chrome() driver.get(base_url) # 等待页面加载完成 time.sleep(3) # 获取页面源码 page_source = driver.page_source # 使用BeautifulSoup解析页面 soup = BeautifulSoup(page_source, "html.parser")
# 填写登录表单 driver.find_element_by_id("username").send_keys("your_username") driver.find_element_by_id("password").send_keys("your_password") # 提交表单 driver.find_element_by_id("submit").click()
Kesimpulan:
Dengan menggunakan Python dan Redis untuk membina perangkak web, kami boleh menangani strategi anti perangkak biasa dengan berkesan dan mencapai pemerolehan data yang lebih stabil dan cekap. Dalam aplikasi praktikal, pengoptimuman dan penyesuaian selanjutnya diperlukan berdasarkan strategi anti-perakak tapak web tertentu. Saya harap artikel ini dapat membantu kerja pembangunan perangkak anda.
Atas ialah kandungan terperinci Membina perangkak web dengan Python dan Redis: Cara menangani strategi anti-merangkak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!