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

时间:2019-06-27 22:31:08

标签: python scrapy scrapy-splash

我正在抓取网页SI44066,并且需要单击一个按钮才能访问一些数据,因此我试图模拟鼠标单击,但是我对如何做到这一点感到困惑。我曾经建议只刮JSON,因为这样会容易得多,但我真的不想刮。我宁愿抓取常规网站。到目前为止,这是我所拥有的,我不知道该怎么做才能使其单击该显示按钮,但这是迄今为止我的最佳尝试。

http://www.starcitygames.com/buylist/

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

1 个答案:

答案 0 :(得分:0)

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

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

PS:如果没有登录凭据,我们将无法访问此站点。我怀疑您不需要呈现JavaScript。超过90%的情况就是这种情况。