You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Scrapy parse函数+Selenium爬取.net网站失败求助

问题分析与解决方案

你的第一个版本代码无法运行的核心原因有两个:

1. 缺少time模块导入

第一个代码的parse函数中使用了time.sleep(10),但代码顶部没有导入time模块,运行时会直接抛出NameError: name 'time' is not defined,导致执行失败。而第二个类级别的代码里明确导入了time,所以能正常执行。

2. 浏览器资源未正确管理(潜在问题)

在parse函数中启动浏览器后,没有添加关闭浏览器的逻辑,会导致浏览器进程残留,造成资源泄漏。


修正后的parse函数写法

import time
import scrapy
from scrapy import Selector
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager


class BoursakuwaitSpider(scrapy.Spider):
    name = 'boursakuwait'
    custom_settings = {
        'FEED_URI': 'second.json',
        'FEED_FORMAT': 'json',
    }
    start_urls = ['https://casierjudiciaire.justice.gov.ma/verification.aspx']

    def parse(self, response):
        # 初始化Chrome浏览器
        browser = webdriver.Chrome(executable_path=ChromeDriverManager().install())
        try:
            # 复用start_urls的地址,避免重复硬编码
            browser.get(response.url)
            # 等待页面完全加载(建议用显式等待替代time.sleep,更高效)
            time.sleep(10)
            
            # 将浏览器页面转为Scrapy Selector,方便提取数据
            sel = Selector(text=browser.page_source)
            
            # 这里添加你的数据提取逻辑,示例:
            # item = {}
            # item['some_field'] = sel.xpath('//div[@class="example"]/text()').get()
            # yield item
            
        finally:
            # 无论是否出错,确保浏览器关闭,释放资源
            browser.quit()

额外建议

  • 不要在类级别直接初始化浏览器:类级别的代码会在爬虫加载时立即执行,无法利用Scrapy的调度机制,且容易造成多进程泄漏问题。
  • 用显式等待替代time.sleep:time.sleep是固定等待,页面加载完成后仍会浪费时间,显式等待可以在目标元素出现后立即继续执行,示例:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 等待某个元素出现,最多等10秒
    WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.ID, "target_element_id"))
    )
    

内容的提问来源于stack exchange,提问作者Med_Maliari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:50:13