Search code examples
pythonweb-scrapingscrapyscrapy-splash

Scraping table provides no results


I thought I had a decent grasp of this now, but I've run into a problem again.

I get no results like this - but if I move the yield one tab back - I get the suspected first two items.

Here's a little snippet of the log:

2019-01-07 20:00:16 [scrapy.extensions.logstats] INFO: Crawled 1 pages (at 1 
pages/min), scraped 0 items (at 0 items/min)
2019-01-07 20:00:16 [scrapy.core.engine] DEBUG: Crawled (200) <GET 
https://www.mysite.no.html?dest_id=-263870;checkin=2019-02-01;checkout=2019- 
02-02;group_adults=1 via http://localhost:8050/render.html> (referer: None)

Here's the function:

    def parse(self, response):  
    item = klekkenItem()
    item['skaptdato'] = datetime.datetime.now()
    url_en = response.url # Henter urlen
    resultat = urlparse(url_en).query.split('=')[-3]  # Plukker ut deler av urlen
    nytt_resultat = resultat.split(';',1)[0] # plukker ut første del av resultatet
    fradatoen = ''.join(nytt_resultat) # gjør om datoen til en streng
    item['fradato'] = datetime.datetime.strptime(fradatoen, '%Y-%m-%d') # Konverterer til datoformat                
    tabellen = response.css('td.hprt-table-cell-roomtype')      
    for room in tabellen:
        romnavnet = room.css('span.hprt-roomtype-icon-link::text').get()    
        item['romnavn'] = romnavnet.strip() 
        yield item

And here's a link to [the page][1]

btw: I've quadrouple checked my tab's (five times)...

What am I missing? Anyone? I'm sure it's a blind spot.


Solution

  • tabellen = response.css('td.hprt-table-cell-roomtype')
    romnavnet = room.css('span.hprt-roomtype-icon-link::text').extract()    #use extract function or `extract_first()`
    

    This one gives you 4 rows, while first one is redundant and other Three have data.

    You don't need to use splash to get this data. it is statically available on the webpage.