python - 如何使用 Scrapy 更快地制作 Selenium driver.get
问题描述
下面是一个用于监控某个网站的 python 脚本,一旦某个特定的类(在这个例子中 '.ant-card-body'
)发生任何变化,就做一些事情。
但是,driver.get()
完全加载网页大约需要 14 秒...
你能帮我用什么样的解决方法来让它更快,立即检测元素变化吗?
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from scrapy.crawler import CrawlerProcess
import scrapy
import time
class BasicSpider(scrapy.Spider):
name = "basic"
allowed_domains = [""]
start_urls = ['https://solanamonkeysclub.com/#/#mint']
def __init__(self, **kwargs):
super().__init__(**kwargs)
chrome_options = Options()
chrome_options.add_argument("--headless")
self.driver = webdriver.Chrome('chromedriver.exe', options=chrome_options)
def parse(self, response, **kwargs):
# constantly get webpage and check if an element has been changed
while True:
start = time.time()
self.driver.get(response.url)
end = time.time()
print(end - start) # takes 14 SECONDS...
new_elems = self.driver.find_elements_by_css_selector('.ant-card-body')
for new_elem in new_elems:
print(f'{"new_elem":10} : {new_elem.text}')
if new_elem.text != 0:
pass
process = CrawlerProcess()
process.crawl(BasicSpider)
process.start()
解决方案
推荐阅读
- tsql - 是否可以使用 2 个执行 SQL 任务在 SSIS 中使用事务包装容器?
- c# - 将数据集(在 iframe 页面中)绑定到中继器(在父页面中)
- mysql - 如何使用 Diesel 生成和解析原始 SQL 查询?
- asp.net-core - 我不使用 Kestrel 作为 Web 服务器并在代码中启用 IIS 集成,但显示服务器是 Kestrel 的响应标头
- c# - 粘贴超过 32767 的 DataGridViewTextBoxColumn 文本
- javascript - 过滤香草 javascript 待办事项列表中的待办事项
- amazon-web-services - 如何使我的 AWS Lambda 函数能够写入 Firehose?
- python - python3:选择包属性中的功能和模块
- sql - Microsoft Access 2016 - 插入 SQL 查询未添加正确的行数
- sql - MsSQL如何在一次查询中从给定日期和仓库号获取最近的未来值和值的总和