Scrapy不会选择嵌入元素

时间:2013-02-23 22:55:05

标签: python xpath scrapy

我正在使用Scrapy来确切知道网站中是否有任何Flash内容。 我使用以下代码:

hxs = HtmlXPathSelector(response)

(len(hxs.select('//embed[contains(@src,".swf")]')) > 0 or len(hxs.select('//object[contains(@data,".swf")]')) > 0  or len(hxs.select('//object/param[contains(@value,".swf")]')) > 0)

但总是返回false。 我意识到即使我使用

 hxs.select('//embed')

当我确定网站上有内容时,它不会选择任何元素。 感谢

1 个答案:

答案 0 :(得分:1)

执行某些JS代码后,很可能是embed元素存在。我尝试在youtube视频上运行scrapy shell并遇到与你相同的问题。您可以通过使用实际执行JS代码的库来解决此问题,例如Selenium。以下是您可以在普通scrapy蜘蛛中使用的一些示例代码。

import time
from selenium import webdriver

browser = webdriver.Firefox()
browser.get('https://www.youtube.com/watch?v=e_44G-kE8lE') # Load page
time.sleep(3) # Make sure we had enough time to load everything
browser.find_elements_by_xpath("//embed")

运行最后一行代码后,我确实看到了一个元素,而scrapy hxs则没有。如果您最终使用此解决方案this snippet将Selenium与scrapy集成应该会有所帮助。