2017-09-05 8 views
-1

私は以下のウェブサイトをスクラップしようとしていますが、いくつか問題があります。彼らがどのようにempresasのリストを作成しているのかわかりません。
私はいくつかのカテゴリを選択してフォームを送信すると、URL doesntの変更、私は要求を見てみましたが、成功しませんでした(ここではwebdeveloperではありません)。javascriptの動的ウェブサイトをスクラップする方法

http://www.vitrinedoexportador.gov.br 

私は最初にウェブページのすべてのリンクに行ってみました。私が試した最初のアプローチは、すべてのURLをbruteforcingでした。彼らはこの構文を持っています。 "http://www.vitrinedoexportador.gov.br/bens/ve/br/detalhes/index/cdEmpresa/" + 6桁コード+ "#inicio"

しかし、私は999999の可能性を試してみると、問題を解決するには間違った方法だと思います。 私が試している次のアプローチは、セレンのwebdriverを使ってページをナビゲートしています。以下のコードで :

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() 

しかし、信じられないほど遅いseens、と私はまだ1つのcompanieを得ることができ、これを行うために、よりスマートな方法はありますか?

私が試みた他のアプローチは、スクラップを使用しています。私はすでに必要なすべてのフィールドを持つcompanieページ全体を解析できます。だから、もし皆さんがIDSを取得するために私を助けてくれたら、すでに組み込まれている治療プロジェクトで解析することができます。

ありがとうございます。

答えて

0

私はすでにこれと非常に似た何かをやったことがあり、超簡単な方法はありません。それはバックエンドに属しているので、通常、すべての企業のリストはありません。フロントエンドを使用してページに移動し、ループを作成して必要なものをスクラップする必要があります。

たとえば、メインのURLをクリックした後、5つのオプションしかない「Valor da empresa」というフィルタを変更しました。私は3436社を私に与えた最初のものを選んだ。これは、会社の詳細を削除するか、既にこのページにあるtel cepアドレスのようなメイン情報のみを削除するかによって異なります。詳細が必要な場合は、各リンクをクリックしてメインページからスクラップし、検索に戻り、次のリンクをクリックするループを構築する必要があります。主な情報だけが必要な場合は、beautifullスープでclass=resultitemを取得し、最初のページを取得するためにデータをループすることで、すでに検索ページで取得できます。 いずれの場合も、次のステップ(最初のページのすべてのリンクが削られた後)が2番目のページを押してもう一度やり直しています。

あなたが最初のフィルタのすべての3436をスクラップした後、他の4つのフィルタのために再びそれを行うと、あなたはあなたが他のフィルタを使用することができ、すべての企業

になるだろうが、彼らは多くのオプションを持っているとあなたが希望するすべての企業を経由します彼らのすべてを通過しなければならない、それはより多くの仕事です。

希望に役立ちます!

+0

私はこのように言っています。セレンを速く走らせるための提案はありますか? – WagnerAlbJr

+0

いいえ...幸運 – Tico

関連する問題