我正在抓取网页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
答案 0 :(得分:0)
Splash是用于渲染JS的轻量级选项。如果要在无法进行反向工程的菜单中进行大量单击和导航,那么您可能不希望Splash,除非您不介意尝试编写LUA脚本。您可能希望看到this与此相关的答案。
您将编写一个LUA脚本并将其传递给execute Splash端点。根据您的任务的复杂程度,Selenium可能是您的项目的更好选择。但是,首先要彻底检查目标站点,并确保您需要渲染JavaScript,因为如果不需要速度和资源,渲染JS总是最糟糕的事情。
PS:如果没有登录凭据,我们将无法访问此站点。我怀疑您不需要呈现JavaScript。超过90%的情况就是这种情况。