scrapy 使用selenium爬取网页截屏
要使用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来爬取网页并截屏了。当然,你还可以根据需要对代码进行扩展和优化
原文地址: https://www.cveoy.top/t/topic/io15 著作权归作者所有。请勿转载和采集!