Search code examples
pythonparsingrequestlxmlurllib3

Problem whith parsing EpicGames Store on Python


I have a problem parsing the EpicGames Store in python. I would like to receive information about free games. I am writing code, but I only get []. I tested it on other sites and everything was fine. I have Python 3.8.8

from lxml.html import fromstring
import urllib.request

response = urllib.request.urlopen('https://www.epicgames.com/store/pl/').read()
page = fromstring(response)
games = page.xpath('/html/body/div[1]/div/div[4]/main/div/div[3]/div/div/span[4]/div/div/section/div/div[1]/div/div/a/div/div/div[3]/span[1]')
print(games)

Solution

  • Maybe you want to try the following code:

    import requests
    from pprint import pprint
    
    import lxml.html
    
    
    if __name__ == '__main__':
        base_url = 'https://www.epicgames.com'
    
        response = requests.get(base_url + '/store/pl/free-games')
        root = lxml.html.fromstring(response.content)
    
        results = root.xpath(".//a[contains(@class, 'DiscoverCardLayout__link')]")
    
        for result in results:
            url = base_url + result.get('href', '')
            title_item = result.xpath(
                ".//span[@data-testid='offer-title-info-title']")
            studio_item = results[0].xpath(
                ".//span[@data-testid='offer-title-info-subtitle']")
            is_free_item = results[0].xpath(
                ".//div[@data-component='PriceLayout']")
    
            try:
    
                pprint(
                    {
                        'url': url,
                        'title': title_item[0].text,
                        'studio': studio_item[0].text_content(),
                        'is_free': (
                            is_free_item[0].text_content().strip() == 'Bezpłatne')
                    }
                )
    
            except IndexError:
                continue
    

    Save it in a file, like 'epic_script.py' and run it: python3 epic_script.py.

    For today, 2021-07-13, print results as bellow:

    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Fortnite',
     'url': 'https://www.epicgames.com/store/pl/p/fortnite'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Rocket League®',
     'url': 'https://www.epicgames.com/store/pl/p/rocket-league'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Warface',
     'url': 'https://www.epicgames.com/store/pl/p/warface'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Genshin Impact',
     'url': 'https://www.epicgames.com/store/pl/p/genshin-impact'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Phantasy Star Online 2 New Genesis',
     'url': 'https://www.epicgames.com/store/pl/p/phantasy-star-online-2'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Scavengers',
     'url': 'https://www.epicgames.com/store/pl/p/scavengers'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Core',
     'url': 'https://www.epicgames.com/store/pl/p/core'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Rogue Company',
     'url': 'https://www.epicgames.com/store/pl/p/rogue-company'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Magic The Gathering Arena',
     'url': 'https://www.epicgames.com/store/pl/p/mtg-arena'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Idle Champions of the Forgotten Realms',
     'url': 'https://www.epicgames.com/store/pl/p/idle-champions-of-the-forgotten-realms'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Dauntless',
     'url': 'https://www.epicgames.com/store/pl/p/dauntless'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Paladins',
     'url': 'https://www.epicgames.com/store/pl/p/paladins'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Trackmania',
     'url': 'https://www.epicgames.com/store/pl/p/trackmania'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'SMITE',
     'url': 'https://www.epicgames.com/store/pl/p/smite'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'World of Warships',
     'url': 'https://www.epicgames.com/store/pl/p/world-of-warships'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Spellbreak',
     'url': 'https://www.epicgames.com/store/pl/p/spellbreak'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Heroes & Generals WWII',
     'url': 'https://www.epicgames.com/store/pl/p/heroes-and-generals-wwii'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'CRSED: F.O.A.D.',
     'url': 'https://www.epicgames.com/store/pl/p/crsed-f-o-a-d'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Auto Chess',
     'url': 'https://www.epicgames.com/store/pl/p/auto-chess'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Path of Exile',
     'url': 'https://www.epicgames.com/store/pl/p/path-of-exile'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Magic: Legends',
     'url': 'https://www.epicgames.com/store/pl/p/magic-legends'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Diabotical',
     'url': 'https://www.epicgames.com/store/pl/p/diabotical'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Neverwinter',
     'url': 'https://www.epicgames.com/store/pl/p/neverwinter'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Star Trek Online',
     'url': 'https://www.epicgames.com/store/pl/p/star-trek-online'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Primordials: Battle of Gods',
     'url': 'https://www.epicgames.com/store/pl/p/primordials-battle-of-gods'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Might & Magic: Chess Royale',
     'url': 'https://www.epicgames.com/store/pl/p/might-and-magic-chess-royale'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Hyper Scape™',
     'url': 'https://www.epicgames.com/store/pl/p/hyper-scape'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Battle Breakers',
     'url': 'https://www.epicgames.com/store/pl/p/battle-breakers'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'SpellForce 3: Versus Edition',
     'url': 'https://www.epicgames.com/store/pl/p/spellforce-3-versus'}
    {'is_free': True,
     'studio': 'Epic Games',
     'title': 'Delores: A Thimbleweed Park mini-adventure',
     'url': 'https://www.epicgames.com/store/pl/p/thimbleweed-park--delores'}