Как симулировать щелчок мышью в Scrapy-Splash - PullRequest
0 голосов
/ 28 июня 2019

Я очищаю веб-страницу, http://www.starcitygames.com/buylist/,, и мне нужно нажать кнопку, чтобы получить доступ к некоторым данным, и поэтому я пытаюсь смоделировать щелчок мыши, но я не совсем понимаю, как именно это сделать.У меня были предложения просто очистить JSON, потому что это было бы намного проще, но я действительно не хочу очищать его.Я бы предпочел поцарапать обычный сайт.Вот что у меня есть, я не знаю точно, что нужно сделать, чтобы заставить его нажать эту кнопку дисплея, но пока это была моя лучшая попытка.

HTML-код

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 голосов
/ 28 июня 2019

Splash - это легковесная опция для рендеринга JS. Если у вас есть обширный щелчок и навигация в меню, которое не может быть перепроектировано, то вы, вероятно, не захотите Splash, если не возражаете попытаться написать скрипт LUA. Вы можете захотеть увидеть этот ответ по этому поводу.

Вы напишите сценарий LUA и передадите его конечной точке выполнения Splash. В зависимости от сложности вашей задачи Selenium может стать лучшим выбором для вашего проекта. Однако сначала тщательно изучите целевой сайт и убедитесь, что вам необходим рендеринг JavaScript, так как рендеринг JS - это всегда худшее, что вы можете сделать, если вам не нужны скорость и ресурсы.

PS: Мы не можем получить доступ к этому сайту без учетных данных для входа. Я подозреваю, что вам не нужно отображать JavaScript. Это в 90% случаев.

...