2014-09-22 71 views
1

我试图捕获此页面上的访问次数,但python返回没有文本的标签。使用请求和BeautifulSoup - Python返回没有文本的标签

这就是我所做的。

import requests 
from bs4 import BeautifulSoup 

r = requests.get("http://www.kijiji.ca/v-2-bedroom-apartments-condos/city-of-halifax/clayton-park-west-condo-style-luxury-2-bed-den/1016364514") 
soup = BeautifulSoup(r.content) 
print soup.find_all("span",{"class":"ad-visits"}) 

回答

2

你想凑由JavaScript这样beautfulsouprequests被填充的值不会在这种情况下工作。

你需要使用类似selenium来获得输出。

from bs4 import BeautifulSoup 
from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("http://www.kijiji.ca/v-2-bedroom-apartments-condos/city-of-halifax/clayton-park-west-condo-style-luxury-2-bed-den/1016364514") 
soup = BeautifulSoup(driver.page_source , 'html.parser') 
print soup.find_all("span",{"class":"ad-visits"}) 

Selenium将返回网页源代码渲染,然后你可以使用beautifulsoup来获取值

[<span class="ad-visits">385</span>] 
+0

确实的Python必须打开Firefox的检索infromation? – JohnT 2014-09-23 13:56:57

+0

你可以使用firefox的'无头',或者你也可以使用硒的另一个webdriver,但你需要有一个环境,它会呈现JavaScript。 – dataisbeautiful 2014-09-23 14:00:35

+0

你是什么意思无头的?你的代码如何改变 – JohnT 2014-09-24 01:06:51

相关问题