Python 3.x 用python抓取动态网站(CSS?)

Python 3.x 用python抓取动态网站(CSS?),python-3.x,selenium-webdriver,beautifulsoup,Python 3.x,Selenium Webdriver,Beautifulsoup,我想知道当地图书馆是否有藏品。我可以在目录中看到绿色图标可用,或红色图标借出/不可用 首先,我试了一下,这是我试过的python代码: try: import urllib.request as urllib2 except ImportError: import urllib2 from bs4 import BeautifulSoup page = urllib2.urlopen("http://zoeken.mol.bibliotheek.be/?itemid=|libr

我想知道当地图书馆是否有藏品。我可以在目录中看到绿色图标可用,或红色图标借出/不可用

首先,我试了一下,这是我试过的python代码:

try:
    import urllib.request as urllib2
except ImportError:
    import urllib2
from bs4 import BeautifulSoup

page = urllib2.urlopen("http://zoeken.mol.bibliotheek.be/?itemid=|library/marc/vlacc|9394694&undup=false")
soup = BeautifulSoup(page)

bal = soup.find(class_="avail-icon")
print(bal)
但是,firefox中的元素检查提供:

<span class="avail-icon">
    <i class="circle-icon avail-icon-none"></i>
    <span class="hidden-text"></span>
</span>
不幸的是,这给了我:

<span class="avail-icon">
    <i class="circle-icon avail-icon-unknown"></i>
    <span class="hidden-text">Toon beschikbaarheid voor</span>
</span>
仍然是相同的结果,class=circle icon avail icon unknown不是我想要的,我现在没有主意了。有人能给我一个提示吗

PS:也许是个主意,但我不知道怎么做: 在Firefox的元素检查器中,右侧窗格有一个名为rules dutch:regels的列。红色和绿色图标作为一个.png文件icon-sprite.png加载。选择红色/绿色图标以了解我的意思

背景位置:-48px-16px;表示可用的绿色图标

背景位置:0px-32px;表示红色图标不可用

我能测试一下这个吗


PS2:我是一名程序员新手,技能水平=低。

完全可以通过使用selenium做到这一点:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()
driver.get("http://zoeken.mol.bibliotheek.be/?itemid=|library/marc/vlacc|9394694&undup=false")

#waiting until the icon is loaded...
WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, """//*[@id="availabilityStatic"]/div/div/ul/li/ul/li/span/i""")))

circle_icon = driver.find_element_by_xpath("""//*[@id="availabilityStatic"]/div/div/ul/li/ul/li/span/i""")
icon_class = circle_icon.get_attribute("class")

if "loanedout" in icon_class:
    print "item not available"
else:
    print "item available"


driver.quit()
<span class="avail-icon">
    <i class="circle-icon avail-icon-unknown"></i>
    <span class="hidden-text">Toon beschikbaarheid voor</span>
</span>
from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://zoeken.mol.bibliotheek.be/?itemid=|library/marc/vlacc|9394694&undup=false")

html = driver.page_source
soup = BeautifulSoup(html)

bal = soup.find(class_="avail-icon")
print(bal)
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()
driver.get("http://zoeken.mol.bibliotheek.be/?itemid=|library/marc/vlacc|9394694&undup=false")

#waiting until the icon is loaded...
WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, """//*[@id="availabilityStatic"]/div/div/ul/li/ul/li/span/i""")))

circle_icon = driver.find_element_by_xpath("""//*[@id="availabilityStatic"]/div/div/ul/li/ul/li/span/i""")
icon_class = circle_icon.get_attribute("class")

if "loanedout" in icon_class:
    print "item not available"
else:
    print "item available"


driver.quit()