【问题标题】:How to simulate mouse click in Scrapy-Splash如何在 Scrapy-Splash 中模拟鼠标点击
【发布时间】:2019-06-27 22:31:08
【问题描述】:

我正在抓取一个网页,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

【问题讨论】:

    标签: python scrapy scrapy-splash


    【解决方案1】:

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

    您将编写一个 LUA 脚本并将其传递给执行 Splash 端点。根据您的任务的复杂程度,Selenium 可能是您项目的更好选择。但是,首先要彻底检查目标站点并确定您需要渲染 JavaScript,因为如果您不必考虑速度和资源,那么渲染 JS 总是最糟糕的事情。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 2021-03-30
      • 2022-11-18
      • 2012-12-15
      相关资源
      最近更新 更多