python 爬虫框架介绍

python 爬虫框架介绍

文章目录

前言一、Requests + BeautifulSoup(基础组合)二、Scrapy(高级框架)三、PySpider(可视化爬虫)四、Selenium(浏览器自动化)五、Playwright(新一代浏览器自动化)

前言

Python 提供了多种强大的爬虫框架,适用于不同场景和需求。以下是主流框架的详细介绍及对比分析:

一、Requests + BeautifulSoup(基础组合)

特点:

Requests:HTTP 请求库,简单易用BeautifulSoup:HTML/XML 解析库,灵活强大适合场景:中小型网站、结构规则的页面 示例代码:

import requests

from bs4 import BeautifulSoup

url = "https://example.com"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

# 提取所有链接

links = [a['href'] for a in soup.find_all('a', href=True)]

# 提取特定元素

title = soup.find('h1').text

二、Scrapy(高级框架)

特点:

全功能爬虫框架,支持异步、分布式内置调度器、下载器、解析器自动处理 cookies、会话、重试等适合场景:大型网站、高性能需求 示例代码:

import scrapy

class ExampleSpider(scrapy.Spider):

name = "example"

start_urls = ["https://example.com"]

def parse(self, response):

# 提取数据

for item in response.css('div.item'):

yield {

'title': item.css('h2::text').get(),

'link': item.css('a::attr(href)').get(),

}

# 跟进链接

next_page = response.css('a.next-page::attr(href)').get()

if next_page:

yield response.follow(next_page, self.parse)

运行命令:

bash

scrapy startproject myproject

scrapy genspider example example.com

scrapy crawl example -o items.json

三、PySpider(可视化爬虫)

特点:

可视化界面,支持 Web 端操作支持 JavaScript 渲染(PhantomJS/Selenium)内置任务队列和结果存储适合场景:需要可视化监控的爬虫 安装与启动:

pip install pyspider

pyspider all

示例代码:

from pyspider.libs.base_handler import *

class Handler(BaseHandler):

@every(minutes=24 * 60)

def on_start(self):

self.crawl('https://example.com', callback=self.index_page)

@config(age=10 * 24 * 60 * 60)

def index_page(self, response):

for each in response.doc('a[href^="http"]').items():

self.crawl(each.attr.href, callback=self.detail_page)

def detail_page(self, response):

return {

"url": response.url,

"title": response.doc('title').text(),

}

四、Selenium(浏览器自动化)

特点:

控制真实浏览器,支持 JavaScript 渲染适用于需要用户交互的场景性能较低,适合小规模数据采集 示例代码:

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.chrome.service import Service

# 设置 ChromeDriver 路径

service = Service('/path/to/chromedriver')

driver = webdriver.Chrome(service=service)

driver.get('https://example.com')

# 等待元素加载

element = driver.find_element(By.CSS_SELECTOR, 'button.submit')

element.click()

# 提取数据

data = driver.find_element(By.CSS_SELECTOR, 'div.result').text

driver.quit()

五、Playwright(新一代浏览器自动化)

特点:

由 Microsoft 开发,支持多浏览器自动化操作高效,支持无头模式内置等待、断言等功能 示例代码:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:

browser = p.chromium.launch(headless=False)

page = browser.new_page()

page.goto('https://example.com')

# 填写表单

page.fill('input[name="search"]', 'Python')

page.click('button[type="submit"]')

# 等待结果

page.wait_for_selector('div.result-item')

# 提取数据

results = page.query_selector_all('div.result-item')

for result in results:

print(result.text_content())

browser.close()

相关推荐

邛竹的解释
365在线娱乐平台官网

邛竹的解释

📅 10-06 👁️ 1580
5分钟学会制作微信小程序:个人开发全教程指南
365bet手机下载

5分钟学会制作微信小程序:个人开发全教程指南

📅 07-29 👁️ 1386
靠自己的名言警句
365bet手机下载

靠自己的名言警句

📅 07-27 👁️ 7416