python动态webscraping javascript内容

时间:2014-06-30 00:47:21

标签: python selenium web-scraping

我正在使用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()

1 个答案:

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