Exemplo n.º 1
0
def get(url, filename_prefix='result'):
    doc = Documentation()

    # ~~~~~~~~~~~~~~~ Code serveur et réponse HTTP ~~~~~~~~~~~~~~~ #
    result = getHTTP(url)
    with open('./results/' + filename_prefix + '_serverCode.html', 'wb') as f:
        f.write(result['code_serveur'].encode(
            'utf-8'))  #écriture du résulat dans un fichier
    #documentation requests:
    doc.info['requests'] = []
    doc.info['requests'].append(result['info'])

    with open('./results/' + filename_prefix + '_documentation.json',
              'wb') as f:
        f.write(str(doc).encode('utf-8'))
Exemplo n.º 2
0
def getURL(url, headers=None, tor=False, filename_prefix=None, path="./"):
    '''Fonction pour l'exemple qui écris dans des fichier la trace Web, le code serveur et la documentation'''

    if filename_prefix == None:
        domain = re.search("//([^/]+)/", url)
        filename_prefix = path + domain[1]
    else:
        filename_prefix = "gethttp"

    # ~~~~~~~~~~~~~ Requests - script http_requests.py ~~~~~~~~~~~~~~~ #
    result = getHTTP(url, headers, tor)

    with open(filename_prefix + '_serverCode.html',
              'wb') as f:  #écriture du résulat dans un fichier
        f.write(result['code_serveur'].encode('utf-8'))

    # ~~~~~~~~~~~~~ Documentation - script documentation.py ~~~~~~~~~~ #
    doc = Documentation(tor=tor)
    doc.info = result[
        'info']  #les infos venant du module http_requests seulement au moment de faire la request, il faut les ajouter

    with open(filename_prefix + '_documentation.json',
              'wb') as f:  #écriture du résulat dans un fichier
        f.write(str(doc).encode('utf-8'))
Exemplo n.º 3
0
    # ~~~~~~~~~~~~~~~ Ouverture du port de Tor, si besoin ~~~~~~~~~~~~~~~ #
    if tor:
        if sys.platform == 'win32':
            tor_process = subprocess.Popen(os.getcwd() +
                                           r'\webdrivers\win_Tor\tor.exe',
                                           stdout=subprocess.DEVNULL,
                                           stderr=subprocess.DEVNULL)
        if sys.platform == 'darwin':
            tor_process = subprocess.Popen(os.getcwd() +
                                           r'/webdrivers/osx_Tor/tor.real',
                                           stdout=subprocess.DEVNULL,
                                           stderr=subprocess.DEVNULL)

    # ~~~~~~~~~~~~~~~ Documentation ~~~~~~~~~~~~~~~ #
    doc = Documentation(tor=tor)

    # ~~~~~~~~~~~~~~~ Code client et screenshot ~~~~~~~~~~~~~~~ #
    browser = Firefox(headless=headless, tor=tor)  #ou Chrome(...)
    info = browser.get(url)
    browser.driver.execute_script(
        "window.scrollTo(0, window.innerHeight);"
    )  #window.innerHeight retourne la hauteur de la fenêtre
    time.sleep(5)  #attendre 5 sec
    browser.clientCode('./results/' + filename_prefix + '_clientCode.html')
    browser.screenshot('./results/' + filename_prefix + '_screenshot.png',
                       width=1080)
    #documentation selenium:
    doc.info['selenium'] = []
    info['actions'].append(
        'driver.execute_script("window.scrollTo(0, window.innerHeight);")')
Exemplo n.º 4
0
            output=re.findall("(.*)>.*",dic["Province > County"])[0].strip(" ")
        else:
            output= None
    else :
        output=None
    return output




if __name__ == '__main__':

    #Documentation
    cT = datetime.datetime.now()
    date_parsing = f"{str(cT.year)}-{str(cT.month)}-{str(cT.day)}_{str(cT.hour)}-{str(cT.minute)}"
    doc = Documentation()
   
    path_result='./results/getCodes/codes/'
    
    #Create the directory
    os.makedirs(os.path.dirname("./results/parseCodes/documentation/"), exist_ok=True)

    #Iterate through client codes
    for row in session.query(Ads_Codes).filter_by(status=0): #status=0
        #Skip if already exists
        if session.query(exists().where(Parse_ads.ad_id == row.ad_id)).scalar():
            pass
        else:
            #Copy the global variable containing the fields in the ad
            dic_champs=dict_champ.copy()
            filename=row.client_code
Exemplo n.º 5
0
    resp = session.query(exists().where(
        and_(Urls_ads.ad_number == ad_number,
             Urls_ads.country_id == country))).scalar()
    return resp


if __name__ == '__main__':
    cT = datetime.datetime.now()
    date_extraction = f"{str(cT.year)}-{str(cT.month)}-{str(cT.day)}_{str(cT.hour)}-{str(cT.minute)}"
    #~~~~~~~~~~~~~~~ Configuration ~~~~~~~~~~~~~~~#
    filename_prefix = 'urlArticles'
    path = f'./results/getArticles/{date_extraction}_'
    #Create the directory
    os.makedirs(os.path.dirname("./results/getArticles/"), exist_ok=True)
    browser = Firefox(tor=False, headless=False)
    doc = Documentation(driver=browser.driver)

    #~~~~~~~~~~~~~~~ Catch'em all ~~~~~~~~~~~~~~~#
    """REMOVE STRING TO UPDATE THE COUNTRY => That's the only solution you can't go to the end of the ads' list
    and you can't select a specific page AND you can't sort by age (Advanced search doesn't work at the moment)
    For this reason, the code contains a great amount of try/except since we need to go across all pages manually, 
    this increases the chance of a bug and we need to handle them
    
    
    UPDATE WARNING : Le code peut être grandement amélioré car le numéro de page dans l'URL est visible si l'on clique
    sur le bouton pour développer plus d'annonce. Le code ici ne prenait pas cela en compte. Il n'a pas été amélioré car 
    le crawling avait déjà été fait et le présent code peut extraire les données à mettre à jour.
    Ici malheureusement, il faut être sûr d'avoir toutes les annonces jusqu'à la dernière page avant de pouvoir faire de la veille."""

    completed_countries = [
    ]  #["UNITED STATES", "CANADA", "UNITED KINGDOM", "IRELAND", "AUSTRALIA", "NEW ZEALAND", "MALAYSIA", "INDONESIA", "HONG KONG", "INDIA", "SINGAPORE", "PHILIPPINES"] #REMOVE TO UPDATE
Exemplo n.º 6
0
    # ~~~~~~~~~~~~~~~ Ouverture du port de Tor (pour MAC OS ou Windows, on aura en arrière fond le port Tor, plus besoin d'avoir le navigateur Tor ouvert) ~~~~~~~~~~~~~~~ #
    if sys.platform == 'win32':
        tor_process = subprocess.Popen(os.getcwd() +
                                       r'\webdrivers\win_Tor\tor.exe',
                                       stdout=subprocess.DEVNULL,
                                       stderr=subprocess.DEVNULL)
    if sys.platform == 'darwin':
        tor_process = subprocess.Popen(os.getcwd() +
                                       r'/webdrivers/osx_Tor/tor.real',
                                       stdout=subprocess.DEVNULL,
                                       stderr=subprocess.DEVNULL)

    # ~~~~~~~~~~~~~~~ Début Selenium ~~~~~~~~~~~~~~~ #
    browser = Firefox(tor=False, headless=True)  #ou Chrome(...)

    doc = Documentation(driver=browser.driver)
    # Vous pouvez compléter l'objet doc avec les urls parcourues et les manipulations effectuées!

    # Create the folder
    os.makedirs(os.path.dirname("./results/getcountries/"), exist_ok=True)

    url = 'https://www.adpost.com'
    browser.driver.get(url)
    saveData(browser, filename_prefix='./results/getcountries/adpost')

    # ~~~~~~~~~~~~ Parsing des données ~~~~~~~~~~~~~ #
    objet = html.parse('./results/getcountries/adpost_serverCode.html')
    getURL(objet, session, url)  #original_url = url
    doc.addlog("getURL(objet, session, url)")
    #Enregistrement de la documentation dans un fichier .json
    with open('./results/getcountries/documentation.json', 'wb') as f:
Exemplo n.º 7
0
from ressources.project_utils import get_abr_country


def saveData(browser, filename_prefix='selenium'):
    '''Fonction pour l'exemple qui enregistre le code client, la capture d'écran et code serveur'''
    browser.clientCode('./results/getCodes/codes/'+filename_prefix+'_clientCode.html')
    browser.screenshot('./results/getCodes/screenshots/' + filename_prefix + '_screenshot.png', width=1080)  # on fixe la largeur de la fenêtre avec width
    #Décision de pas prendre le serveur code; car même information que client code


if __name__ == '__main__':
    cT = datetime.datetime.now()
    date_extraction = f"{str(cT.year)}-{str(cT.month)}-{str(cT.day)}_{str(cT.hour)}-{str(cT.minute)}"
    filename_prefix="getCodes"

    doc = Documentation()

    #Create the directory
    os.makedirs(os.path.dirname("./results/getCodes/documentation/"), exist_ok=True)
    os.makedirs(os.path.dirname("./results/getCodes/codes/"), exist_ok=True)
    # ~~~~~~~~~~~~~~~ Début Selenium ~~~~~~~~~~~~~~~ #
    browser = Firefox(tor=False, headless=True)

    # ~~~~~~~~~~~~~~~ Récupération des URL à parcourir ~~~~~~~~~~~~~ #
    for i in session.query(Urls_ads).filter_by(status=0):
        #Pour tous les urls dans la database qui ne sont pas encore extrait
        if session.query(exists().where(Ads_Codes.ad_id == i.ad_id)).scalar():
            pass
        else:
            pass_test=0
            while not pass_test :
Exemplo n.º 8
0
                           cites_paper=paper)
    return entry


#GLOBAL (regexes)
re_hasCage = re_hasCage()
re_isBird = re_isBird()
re_hasEgg = re_hasEgg()
re_hasPaper = re_hasPaper()
re_isParrot = re_isParrot()

if __name__ == '__main__':
    #Documentation
    cT = datetime.datetime.now()
    date_parsing = f"{str(cT.year)}-{str(cT.month)}-{str(cT.day)}_{str(cT.hour)}-{str(cT.minute)}"
    doc = Documentation()

    path_result = './results/calssification/'
    #Create the directory
    os.makedirs(os.path.dirname("./results/classification_2_3/documentation/"),
                exist_ok=True)

    #~~~~~~~~~~~~~~ Create Regexes ~~~~~~~~~~~~~~
    dic_regexes = re_generator_species()
    doc.info["regexes"] = dic_regexes
    doc.addlog("Create regexes")
    doc.info["cage_regex"] = re_hasCage
    doc.info["isbird_regex"] = re_isBird

    #2 Dict with regexes for the 2 classifications.
    for dr, classification in zip(
Exemplo n.º 9
0
from ressources.webdriver import Chrome, Firefox  #fichier selenium_driver.py à placer dans le même dossier que votre script
from ressources.documentation import Documentation  # fichier documentation.py qui se trouve dans le dossier ressources
from ressources.db import session, updateURL, Url  #fichier db.py  qui se trouve dans le dossier ressources


def saveData(browser, filename_prefix='selenium'):
    '''Fonction pour l'exemple qui enregistre le code client, la capture d'écran et code serveur'''
    browser.clientCode('./results/html/' + filename_prefix +
                       '_clientCode.html')
    browser.screenshot(
        './results/screenshots/' + filename_prefix + '_screenshot.png',
        width=1080)  #on fixe la largeur de la fenêtre avec width


if __name__ == '__main__':
    doc = Documentation()
    # ~~~~~~~~~~~~~~~ Début Selenium ~~~~~~~~~~~~~~~ #
    browser = Chrome(headless=True)  #ou Chrome(...)

    # ~~~~~~~~~~~~~~~ Récupération des URL à parcourir ~~~~~~~~~~~~~ #
    for i in session.query(Url).filter_by(status=0):
        doc.info['selenium'] = []
        info = browser.get(i.url)
        doc.info['selenium'].append(info)
        saveData(browser, filename_prefix=str(i.id))
        with open(
                './results/documentation/' + str(i.id) + '_documentation.json',
                'wb') as f:
            f.write(str(doc).encode('utf-8'))
        updateURL(session, i)  #met à jour le status de l'URL
        time.sleep(random.uniform(0.1, 0.2))  #attente entre 1.5 et 2.5 sec
Exemplo n.º 10
0
    # ~~~~~~~~~~~~~~~ Ouverture du port de Tor ~~~~~~~~~~~~~~~ #
    if sys.platform == 'win32':
        tor_process = subprocess.Popen(os.getcwd() +
                                       r'\webdrivers\win_Tor\tor.exe',
                                       stdout=subprocess.DEVNULL,
                                       stderr=subprocess.DEVNULL)
    if sys.platform == 'darwin':
        tor_process = subprocess.Popen(os.getcwd() +
                                       r'/webdrivers/osx_Tor/tor.real',
                                       stdout=subprocess.DEVNULL,
                                       stderr=subprocess.DEVNULL)

    # ~~~~~~~~~~~~~~~ Début Selenium ~~~~~~~~~~~~~~~ #
    browser = Firefox(tor=False, headless=False)  #ou Chrome(...)

    doc = Documentation(driver=browser.driver)
    # Vous pouvez compléter l'objet doc avec les urls parcourues et les manipulations effectuées!

    # url1 = 'https://facebookcorewwwi.onion'
    # browser.driver.get(url1)
    # saveData(browser, filename_prefix='./results/fb-onion')

    # url2 = 'https://www.unil.ch'
    # browser.driver.get(url2)
    # saveData(browser, filename_prefix='./results/unil')

    # url4 = 'http://www.fakeid.co.uk/'
    # browser.driver.get(url4)
    # saveData(browser, filename_prefix='./results/fakeid')

    # url5 = 'https://www.fake-id.com/'