У меня есть паук, который выглядит следующим образом:
import scrapy
from scrapy_splash import SplashRequest
class BarkbotSpider(scrapy.Spider):
name = 'barkbot'
start_urls = [
'http://www.facebook.com/pg/TheBarkFL/events/?ref=page_internal/'
]
custom_settings = {
'FEED_URI': 'output/barkoutput.json'
}
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(
url,
self.parse,
)
def parse(self, response):
for href in response.css("div#upcoming_events_card a::attr(href)").extract():
yield response.follow(href, self.parse_concert)
def parse_concert(self, response):
concert = {
"headliner" : response.xpath(
"//h1[@id='seo_h1_tag']/text()"
).extract_first(),
"venue" : "The Bark",
"venue_address" : "507 All Saints St.",
"venue_website" : "https://www.facebook.com/TheBarkFL",
"date_time" : response.xpath(
"//li[@id='event_time_info']//text()"
).extract(),
"notes" : response.xpath(
"//div[@data-testid='event-permalink-details']/span/text()"
).extract()
}
if concert['headliner']:
yield concert
Я запускаю паука, и он успешно заканчивается.Но все ключи «notes» и «date_time» возвращают пустые списки.Я особенно запутался в примечаниях, поскольку это кажется довольно простым, если xpath не может использовать data-testid в качестве атрибута.Тем не менее, я получаю ключ хедлайнера успешно, поэтому я, очевидно, подключаюсь к каждой странице.
Я новичок в очистке контента, сгенерированного JavaScript, и, следовательно, Splash, но мне удалось его получить.другой паук работает успешно, только не на фейсбуке.Что дает?