2016-03-22 13 views
0

csvファイルに保存されている検索条件のリストがあります。私は各検索条件をループして、ウェブサイト上で対応する検索結果を生成したいと考えています。生成された各検索結果(リンク)については、リンクをクリックして、生成された新しいページからデータを取得したいと思います。残念ながら、各リンクに問題が発生しています。誰かが何らかの洞察力を親切に提供できれば、非常に高く評価されますです。Python Web Scraping:Ajaxサイトで1つずつリンクをクリック

import pandas as pd 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from bs4 import BeautifulSoup 

# read list of CAS Numbers to be searched 
data = pd.read_csv("NPRI CACs.csv", names=["CAS Number", "Chemical Name"]) 
data.dropna() 
CAS = data["CAS Number"] 

# Parameters to be called 
url = 'http://www.lifelabs.msdss.com/Login.aspx?ReturnUrl=%2fMainMenu.aspx%3ffm%3d0%26tb%3d0' 

# Sign into SafeTec 
browser = webdriver.Firefox() 
browser.get(url) 
browser.find_element_by_class_name("text").click() 

# Conduct MSDS Searches on SafeTec 
for i in range(10): 
    try: 
     Ingredient_CAS_Number = browser.find_element_by_id("placeBody_dynField48_txtTextBox") 
     Ingredient_CAS_Number.send_keys(CAS[i]) 
     browser.find_element_by_id("placeBody_linkSearchBottom").click() 

     list_links = browser.find_elements_by_css_selector("a[href*='MSDSDetail']") 
     links = [] 
     for j in range(len(list_links)): 
      links.append(list_links[j].get_attribute('href')) 

     Product_Name = [] 
     for link in links: 
      browser.get(link) 
      product = browser.find_element_by_id("placeBody_dynField1_txtTextBox") 
      Product_Name.append(product) 
     print(Product_Name) 

     browser.get(url) 
    except: 
     print(CAS[i]) 
     continue 

答えて

0

私は以下のコードでこれを解決することができました。しかし、解決策は少し控えめです...

import pandas as pd 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from bs4 import BeautifulSoup 

# read list of CAS Numbers to be searched 
data = pd.read_csv("NPRI CACs.csv", names=["CAS Number", "Chemical Name"]) 
data.dropna() 
CAS = data["CAS Number"] 

# Parameters to be called 
url = 'http://www.lifelabs.msdss.com/Login.aspx?ReturnUrl=%2fMainMenu.aspx%3ffm%3d0%26tb%3d0' 

# Sign into SafeTec 
browser = webdriver.Firefox() 
browser.get(url) 
browser.find_element_by_class_name("text").click() 

# Conduct MSDS Searches on SafeTec 
for i in range(2): 

     Ingredient_CAS_Number = browser.find_element_by_id("placeBody_dynField48_txtTextBox") 
     Ingredient_CAS_Number.send_keys(CAS[i]) 
     browser.find_element_by_id("placeBody_linkSearchBottom").click() 

     list_links = browser.find_elements_by_css_selector("a[href*='MSDSDetail']") 
     all_results = [] 
     for j in list_links: 
      result = j.text 
      all_results.append(result) 

     for i in range(len(all_results)): 
      browser.find_element_by_link_text(all_results[i]).click() 
      browser.back() 


     browser.get(url) 
関連する問題