#scrapy #scrapy-splash
#scrapy #scrapy-splash
Вопрос:
я пытаюсь очистить данные из airbnb, поэтому я использую scrapy-splash для javascript, но я не могу получить никаких данных! я могу извлечь из него данные с помощью scrapy-selenium, но он медленный, и иногда некоторые данные отсутствуют, мне приходится повторять сканирование scrapy, чтобы получить их. поэтому я использовал scrapy-splash на другой странице ‘https://www.livecoin.net/en ‘который использует javascript, и он работал отлично, но когда я использую его на этой странице с тем же кодом, но меняю URL и теги, он не работает.
# -*- coding: utf-8 -*-
import scrapy
from scrapy_splash import SplashRequest
class CoinSpider(scrapy.Spider):
name = 'airbnbtest'
script = '''
function main(splash, args)
splash.private_mode_enabled = false
url = args.url
assert(splash:go(url))
assert(splash:wait(5))
splash:set_viewport_full()
return splash:html()
end
'''
def start_requests(self):
yield SplashRequest(url="https://fr.airbnb.com/rooms/908350?adults=1amp;check_in=2020-12-15amp;check_out=2020-12-19amp;source_impression_id=p3_1606413122_qj9zG9UIi4WW/KUyamp;guests=1", callback=self.parse, endpoint="execute", args={
'lua_source': self.script
})
def parse(self, response):
a=response.xpath('(//div[@class="_1qsawv5"]//text())[1]').get()
print(a)
settings.py
BOT_NAME = 'worldometers'
SPIDER_MODULES = ['worldometers.spiders']
NEWSPIDER_MODULE = 'worldometers.spiders'
ROBOTSTXT_OBEY = True
SPIDER_MIDDLEWARES = {
'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,}
DOWNLOADER_MIDDLEWARES = {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,}
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
EED_EXPORT_ENCODING='utf-8'
SPLASH_URL='http://localhost:8050'
from shutil import which
Комментарии:
1. Какую информацию вы хотите получить с помощью вашего XPath?
//span[@class="_1qsawv5"]
На этой странице для меня нет.2. я имею в виду «(// div [@class=»_1qsawv5″]) [1]» sry я изменил код, пока тестировал что-то еще!! все еще не работает