2016-03-22 28 views
0

Bir csv dosyasına kaydedilmiş arama kriterleri listesine sahibim. Bir web sitesinde ilgili arama sonuçlarını oluşturmak için her bir arama kriterine geçmeyi isterim. Oluşturulan her bir arama sonucu grubu için (linkler), bağlantıya tıklamak ve sonra oluşturulan yeni sayfadan verileri almak istiyorum. Maalesef, her bir bağlantıya girmekte sorun yaşıyorum. Herkes biraz anlayış sağlayabilirse, çok takdir edilecektir.Python Web Scraping: Ajax Sitesinde tek tek tıklatıldığında Linkler

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 

cevap

0

Bunu aşağıdaki kodla çözmeyi başardım. Her ne kadar, çözüm biraz yetersiz kalıyor olsa da, bu çözüm biraz ... (

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)