news 2026/9/14 18:54:09

HoRain云--Python 爬虫进阶:Playwright + 异步 + 反爬策略实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Python 爬虫进阶:Playwright + 异步 + 反爬策略实战

1. 为什么需要 Playwright

传统 requests 无法执行 JavaScript。Playwright 支持 Chromium、Firefox、WebKit,能模拟真实浏览器。

安装:

bash

复制

下载

pip install playwright playwright install

2. 基本用法

python

复制

下载

from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=True) page = browser.new_page() page.goto("https://example.com") print(page.title()) browser.close()

3. 异步 Playwright

python

复制

下载

import asyncio from playwright.async_api import async_playwright async def main(): async with async_playwright() as p: browser = await p.chromium.launch(headless=True) page = await browser.new_page() await page.goto("https://example.com") title = await page.title() print(title) await browser.close() asyncio.run(main())

4. 等待元素与提取数据

python

复制

下载

await page.wait_for_selector(".item") items = await page.query_selector_all(".item") for item in items: text = await item.inner_text() print(text)

5. 处理登录与 Cookie

python

复制

下载

await page.fill("#username", "user") await page.fill("#password", "pass") await page.click("#login") await page.wait_for_url("**/dashboard") cookies = await page.context.cookies()

6. 反爬策略

  • 设置 User-Agent:

python

复制

下载

await browser.new_page(user_agent="Mozilla/5.0 ...")
  • 使用代理:

python

复制

下载

browser = await p.chromium.launch(proxy={"server": "http://127.0.0.1:7890"})
  • 随机延迟:

python

复制

下载

await asyncio.sleep(random.uniform(1, 3))
  • 模拟人类操作:随机滚动、鼠标移动。

7. 验证码处理

简单验证码可使用 OCR,如ddddocr

python

复制

下载

import ddddocr ocr = ddddocr.DdddOcr() code = ocr.classification(image_bytes)

复杂验证码建议使用打码平台或人工处理。

8. 并发爬虫架构

使用 asyncio + Playwright:

python

复制

下载

async def crawl(url, browser, sem): async with sem: page = await browser.new_page() try: await page.goto(url, timeout=30000) return await page.title() finally: await page.close() async def main(urls): async with async_playwright() as p: browser = await p.chromium.launch() sem = asyncio.Semaphore(5) tasks = [crawl(url, browser, sem) for url in urls] results = await asyncio.gather(*tasks) await browser.close() return results

9. 常见坑

  • 无头模式被检测,可尝试headless=False或 stealth 插件。

  • 页面未加载完就提取,需使用wait_for_selector

  • 代理不稳定导致超时。

  • 频繁请求触发 IP 封禁。

10. 总结

Playwright 是动态网页爬虫的利器。结合异步、代理和限流,可以构建稳定高效的数据采集系统。务必遵守目标网站 robots.txt 和法律法规。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 18:51:37

智慧城市IoT技术博客大纲:从传感器到Robotaxi的全栈规划

1. 这套博客大纲是怎么来的,以及它到底要解决什么问题 先交代一下背景。我最早在社区写智慧城市相关的技术文章,纯粹是从一个嵌入式开发者的角度,今天聊聊传感器选型,明天写写LoRa网关的配置。写了几个月之后有个很尴尬的问题&…

作者头像 李华
网站建设 2026/9/14 18:50:30

MiGPT实战:3步把小爱音箱变成AI语音助手

MiGPT实战:3步把小爱音箱变成AI语音助手 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 问小爱"为什么天空是蓝的"&#x…

作者头像 李华