Mathias

De Design numérique
Aller à : navigation, rechercher

<syntaxhighlight lang="python">

  1. la librairie qui permet de se connecter au site

import mechanize

  1. la librairie qui permet d'analyser la structure html

import lxml.html

  1. la librairie qui permet de sélectionner une info dans la structure html

import cssselect

import ssl

def getHtmlElements(url, selecteurCss):

   #1. télécharger la source html de la page url
   browser = mechanize.Browser()
   browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
   browser.set_handle_robots(False)

   #problème https
   browser.set_ca_data(context=ssl._create_unverified_context(cert_reqs=ssl.CERT_NONE))

   data = browser.open(url, timeout=10)

   with open("output.txt", 'w') as f:
       f.write(str(data.read()))


   #2. analyser la source et la transformer en structure html navigable
   source = data.read()
   html = lxml.html.fromstring(source)


   #3. viser l'information qui nous intéresse

   #convertir mon sélecteur css en objet cssselect
   selecteurs = cssselect.parse(selecteurCss)
       #0
   #[objet cssselect]

   selecteur = selecteurs[0]

   chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur)

   resultats = html.xpath(chemin_xpath)

   return resultats
   #print(resultats)

goodLinks = []

links = getHtmlElements('https://www.lostmediawiki.com/Article_listing', "h3 .mw-headline a")

for link in links:

   goodLinks.append("https://www.lostmediawiki.com"+link.get('href'))

articles = []

  1. print(goodLinks)

for goodLink in goodLinks:

   articleLinks = getHtmlElements(goodLink, '.mw-parser-output ul li a')
   for articleLink in articleLinks:
       articles.append("https://www.lostmediawiki.com"+articleLink.get('href'))

print(articles) print(len(articles)) </syntaxhighight>