如何在Scrapy-Splash中模拟鼠标点击

How to simulate mouse click in Scrapy-Splash

我正在抓取一个网页,http://www.starcitygames.com/buylist/,我需要点击一个按钮才能访问一些数据,所以我试图模拟鼠标点击,但我对具体怎么做感到困惑.我有建议只擦除 JSON 因为这样会容易得多,但我真的不想擦掉它。我宁愿抓取常规网站。到目前为止,这是我所拥有的,我不知道究竟该怎么做才能让它点击那个显示按钮,但这是我迄今为止最好的尝试。

HTML Code

import scrapy
from scrapy.spiders import Spider
from scrapy_splash import SplashRequest
from ..items import NameItem

class LoginSpider(scrapy.Spider):
    name = "LoginSpider"
    start_urls = ["http://www.starcitygames.com/buylist/"]

    def parse(self, response):
        return scrapy.FormRequest.from_response(
        response,
        formcss='#existing_users form',
        formdata={'ex_usr_email': 'email@example.com', 'ex_usr_pass': 'password'},
        callback=self.after_login
        )



    def after_login(self, response):
        item = NameItem()
        element = splash:select('#bl-search-category') #CSS selector
        splash:mouse_click(x, y)# Confused about how to find x and y
        item["Name"] = response.css("div.bl-result-title::text").get()
        return item

Splash 是用于呈现 JS 的轻量级选项。如果您需要在无法逆向工程的菜单中进行大量点击和导航,那么您可能不想要 Splash,除非您不介意尝试编写 LUA 脚本。您可能希望看到 对此的回答。

您将编写一个 LUA 脚本并将其传递给执行 Splash 端点。根据您的任务的复杂程度,Selenium 可能是您项目的更好选择。但是,首先彻底检查目标站点并确定您需要呈现 JavaScript,因为呈现 JS 始终是您可以做的最糟糕的事情,如果您不必为了速度和资源而这样做的话。

PS: 没有登录凭据我们无法访问此站点。我怀疑您不需要渲染 JavaScript。 90% 以上的情况都是如此。