2013-02-23 3 views
1

웹 사이트에 플래시 콘텐츠가 있는지 실제로 알기 위해 치료를 사용하고 있습니다. 다음 코드를 사용합니다 :치료는 삽입 요소를 선택하지 않습니다

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') 

를 사용하는 경우에도 내가 웹 사이트에이 확신 할 때 어떤 요소를 선택하지 않을 것을 깨달았다. 감사합니다.

+0

JS 코드를 실행하기 전에 요소가 존재합니까? – wRAR

+0

타겟팅하는 XML보기 – JWiley

답변

1

대부분의 경우 JS 코드를 실행 한 후에 embed 요소가 있습니다. 나는 youtube 비디오에서 scrapy 쉘을 실행 해 보았고 당신과 같은 문제에 직면했다. Selenium과 같이 실제로 JS 코드를 실행하는 라이브러리를 사용하여이 문제를 해결할 수 있습니다. 다음은 일반적인 치료 스파이더에서 사용할 수있는 몇 가지 샘플 코드입니다.

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") 

마지막 코드 행을 실행 한 후에 요소 hier를 보았지만 hxs는 그렇지 않습니다. 이 솔루션을 사용하여 끝내려면 this snippet을 사용하여 치료와 셀렌을 통합하는 것이 도움이됩니다.

관련 문제