Python 3.x 用python抓取动态网站(CSS?)
我想知道当地图书馆是否有藏品。我可以在目录中看到绿色图标可用,或红色图标借出/不可用 首先,我试了一下,这是我试过的python代码: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
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()