爬虫—CrawlSpider 结合 Selenium实现抓取目录页url 并通过 url 进一步抓取每章内容

发布于:2024-12-08 ⋅ 阅读:(174) ⋅ 点赞:(0)

1. 环境准备

首先,确保安装了所需的依赖:

pip install scrapy scrapy-selenium selenium

然后,你需要下载与 Chrome 浏览器匹配的 ChromeDriver,并将其路径添加到系统的环境变量中。或者,你可以在代码中指定 Selenium 驱动程序的路径。


2. 配置 Scrapy Settings

settings.py 文件中,配置 scrapy-selenium 中间件和 ChromeDriver 路径:

# settings.py

# 启用 selenium 中间件
DOWNLOADER_MIDDLEWARES = {
   
    'scrapy_selenium.SeleniumMiddleware': 800,
}

# 设置 Selenium 的 WebDriver 类型为 Chrome
SELENIUM_DRIVER_NAME = 'chrome'

# 配置 ChromeDriver 的路径
SELENIUM_DRIVER_EXECUTABLE_PATH = '/path/to/chromedriver'  # 替换为你的 ChromeDriver 路径

# 设置 Selenium 启动浏览器时的参数(无头模式)
SELENIUM_DRIVER_ARGUMENTS = ['--headless', '--disable-gpu', '--no-sandbox']  # 如果不需要无头模式,可以去掉 '--headless'

注意:如果你不想使用无头模式,可以去掉 --headless 选项,这样浏览器界面会显示出来,方便调试。


3. 使用 CrawlSpider 和 Selenium

接下来,我们可以通过 Scrapy 的 CrawlSpider 结合 SeleniumRequest 来抓取动态网页。这里给出一个实际的例子,假设我们要抓取一个包含多个章节的动态文章网站。

3.1 创建爬虫

首先,在 spiders 文件夹中创建一个新的爬虫文件(比如 novel_spider.py)。

import scrapy
from scrapy_selenium import SeleniumRequest
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class NovelSpider(CrawlSpider):
    name = 'novel_spider'
    allowed_domains = ['example.com']
    start_urls = ['https://example.com/contents']  # 文章目录页面

    # 定义抓取规则
    rules = (
        # 规则1:爬取目录页面,提取章节链接
        Rule(

网站公告

今日签到

点亮在社区的每一天
去签到