Używam Splash 2.0.2 + Scrapy 1.0.5 + Scrapyjs 0.1.1
i nadal nie jestem w stanie renderować javascript za pomocą kliknięcia. Oto przykład url https://olx.pt/anuncio/loja-nova-com-250m2-garagem-em-box-fechada-para-arrumos-IDyTzAT.html#c49d3d94cfScrapy + Splash + ScrapyJS
ja wciąż otrzymuję stronę bez numeru telefonu renderowany:
class OlxSpider(scrapy.Spider):
name = "olx"
rotate_user_agent = True
allowed_domains = ["olx.pt"]
start_urls = [
"https://olx.pt/imoveis/"
]
def parse(self, response):
script = """
function main(splash)
splash:go(splash.args.url)
splash:runjs('document.getElementById("contact_methods").getElementsByTagName("span")[1].click();')
splash:wait(0.5)
return splash:html()
end
"""
for href in response.css('.link.linkWithHash.detailsLink::attr(href)'):
url = response.urljoin(href.extract())
yield scrapy.Request(url, callback=self.parse_house_contents, meta={
'splash': {
'args': {'lua_source': script},
'endpoint': 'execute',
}
})
for next_page in response.css('.pager .br3.brc8::attr(href)'):
url = response.urljoin(next_page.extract())
yield scrapy.Request(url, self.parse)
def parse_house_contents(self, response):
import ipdb;ipdb.set_trace()
Jak mogę uzyskać to do pracy?
I rzeczywiście potrzebują tego do pracy, bo będzie przejście do bardziej skomplikowanych js witryn z kalendarzy wyboru daty i rzeczy – psychok7
@ psychok7 jesteś pewna scrapyjs wystarczyłoby dla twojej złożonej dynamicznej strony internetowej? Może przejście na "selen" sprawi, że wszystko pójdzie szybciej i prościej .. – alecxe
Próbuję tego .. Nie mam pojęcia, czy to możliwe, czy nie .. Ale przyjrzę się także selenowi dzięki – psychok7