要使用Selenium来爬取网页并截屏,你需要先安装好Selenium和Chrome浏览器,并下载对应的Chrome浏览器驱动。

首先,你需要在Scrapy的spiders目录下创建一个新的Spider,并导入必要的库:

from scrapy.spiders import Spider
from selenium import webdriver
from scrapy.http import HtmlResponse

然后,你需要在Spider类中定义一个方法来启动Selenium并加载网页:

class ScreenshotSpider(Spider):
    name = 'screenshot_spider'
    
    def __init__(self, *args, **kwargs):
        super(ScreenshotSpider, self).__init__(*args, **kwargs)
        self.driver = webdriver.Chrome('path/to/chromedriver')
    
    def start_requests(self):
        urls = [
            'http://example.com',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

在上述代码中,我们使用了webdriver.Chrome来启动Chrome浏览器,并传入了Chrome浏览器驱动的路径。

接下来,你需要在parse方法中使用Selenium来加载网页,并将网页的截屏保存到本地:

    def parse(self, response):
        self.driver.get(response.url)
        self.driver.save_screenshot('screenshot.png')
        
        # 如果你想要获取网页的HTML代码,可以使用下面的代码
        body = self.driver.page_source
        response = HtmlResponse(self.driver.current_url, body=body, encoding='utf-8')

在上述代码中,我们使用了driver.get来加载网页,然后使用driver.save_screenshot将网页截屏保存到本地。

最后,记得在Spider类的析构方法中关闭Selenium的浏览器实例:

    def __del__(self):
        self.driver.close()

通过以上步骤,你就可以使用Selenium来爬取网页并截屏了。当然,你还可以根据需要对代码进行扩展和优化

scrapy 使用selenium爬取网页截屏

原文地址: https://www.cveoy.top/t/topic/io15 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录