我正在使用Python和Selenium来抓取一个网站。我所做的是转到homepage,输入关键字,例如1300746-79-5。在resulting page上,我试图在"定价"中搜索数据。部分。具体来说,我需要获得" SKU-Pack尺寸"和"价格(美元)"信息。但这些信息是Javascript encripted,所以我在源代码中看不到它们。我想知道如何实现这一目标。
我已经写了一些代码让我进入感兴趣的页面,但我仍然看不到javascript信息。这是我到目前为止所拥有的。
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pprint
# Create a new instance of the Firefox driver
driver = webdriver.Chrome('C:\Users\Rei\Desktop\chromedriver.exe')
driver.get("http://www.sigmaaldrich.com/united-states.html")
print driver.title
inputElement = driver.find_element_by_name("Query")
# type in the search
inputElement.send_keys("1300746-79-5")
inputElement.submit()
答案 0 :(得分:1)
你所做的一切对我来说都是正确的。
" SKU-Pack尺寸"和"价格(美元)"信息未加密",但在JavaScript点击操作后检索。您只需点击产品名称或定价链接即可。
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pprint
driver = webdriver.Chrome()
driver.get("http://www.sigmaaldrich.com/united-states.html")
print driver.title
inputElement = driver.find_element_by_name("Query")
# type in the search
inputElement.send_keys("1300746-79-5")
inputElement.submit()
pricing_link = driver.find_element_by_css_selector("li.priceValue a")
print pricing_link.text
pricing_link.click()
# then deal with the data you want
price_table = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".priceAvailContainer tbody"))
)
print 'price_table.text: ' + price_table.text
driver.quit()