2017-09-05 5 views
-1

Ich habe versucht, die Website unten zu kratzen, aber einige Probleme.Ich kann nicht finden, wie sie die Liste der empresas (in Englisch: Unternehmen) bauen, die sie zeigen.
Wenn ich eine Kategorie auswähle und das Formular abschicke, ändert sich die URL nicht, ich habe versucht, in der Anfrage nachzusehen, aber keinen Erfolg (kein Webentwickler hier).Wie scrape Javascript dynamische Website

http://www.vitrinedoexportador.gov.br 

Ich habe zuerst versucht, alle Links auf der Webseite zu gehen. Die erste Herangehensweise, die ich ausprobiert habe, war die Umsetzung aller URLs. Sie haben diese Syntax. "http://www.vitrinedoexportador.gov.br/bens/ve/br/detalhes/index/cdEmpresa/" + 6-stelliger Code + "#inicio".

Aber ich denke, das Ausprobieren 999999 Möglichkeiten wäre ein falscher Weg, um das Problem zu lösen. Der nächste Ansatz, den ich versuche, ist Navigieren durch die Seiten mit Selen-Webdriver. mit dem folgenden Code:

from selenium import webdriver 

    from selenium.webdriver.support.ui import Select 
    from bs4 import BeautifulSoup 
    import time 

    browser = webdriver.Firefox() 
    browser.get('http://www.vitrinedoexportador.gov.br/bens/ve/br#a') 
    # navigate to the page 
    select = Select(browser.find_element_by_id('cdSetor')) 
    print (select.options) 
    for opt in select.options: 
     print (opt.text) 
     opt.click() 
     if(opt.text != 'Escolha'): 
      opt.submit() 
      time.sleep(5) # tem q colocar esse para a página poder carregar. 
      listaEmpresas = browser.find_elements_by_tag_name("h6") 

      for link in listaEmpresas: 
       print(link) 
      print (listaEmpresas) 

      listaEmpresas[0].click() 

Aber seens unglaublich langsam, und ich kann nur noch einen companie bekommen, ist es eine intelligente Art und Weise, dies zu tun?

Andere Ansatz, den ich ausprobiert habe, ist Schrott verwenden, kann ich bereits eine ganze companie Seite mit allen Feldern analysieren, die ich will. Also, wenn ihr mir auf dem Weg hilft, alle IDS zu bekommen, dann kann ich mein bereits eingebautes Scrapy-Projekt analysieren.

Vielen Dank.

Antwort

0

Ich habe schon etwas sehr ähnliches getan und es gibt keinen super einfachen Weg. Es gibt in der Regel keine Liste mit allen Firmen, da diese zum Backend gehört. Sie müssen das Frontend verwenden, um zu einer Seite zu navigieren, auf der Sie eine Schleife erstellen können, um die gewünschten Elemente zu verwerfen.

Zum Beispiel: Ich habe die Haupt-URL geklickt, dann habe ich den Filter 'Valor da empresa' geändert, der nur fünf Optionen hat. Ich wählte die erste, die mir 3436 Unternehmen gab. Jetzt hängt es davon ab, ob Sie Details der Firma oder nur Hauptinformationen, wie tel cep Adresse, die bereits auf dieser Seite sind, verschrotten wollen. Wenn Sie Details benötigen, müssen Sie eine Schleife erstellen, die auf jeden Link klickt, von der Hauptseite ausgeht, zur Suche zurückkehrt und auf den nächsten Link klickt. Wenn Sie nur die Hauptinformation benötigen, können Sie diese bereits auf der Suchseite finden, indem Sie mit einer schönen Suppe und Daten durchschleifen, um die erste Seite zu erhalten. In jedem Fall wird der nächste Schritt (nachdem alle Links der ersten Seite gekratzt sind) die zweite Seite drücken und es erneut tun.

Nachdem Sie Schrott alle 3436 von ersten Filter wieder tun es auch für andere 4-Filter, und Sie würden alle Unternehmen erhalten

Sie können andere Kriterien verwenden, aber sie haben viele Optionen und für alle Unternehmen durchlaufen würden Sie muss durch alle von ihnen gehen, was mehr Arbeit ist.

Hoffe, dass hilft!

+0

Ich mache so, wie Sie gesagt haben. Gibt es einen Vorschlag, Selen schnell laufen zu lassen? – WagnerAlbJr

+0

Nein ... viel Glück – Tico

Verwandte Themen