2016-12-09 2 views
0

현재 웹 사이트에서 데이터를 긁어 내려고했지만 아래의 코드를 사용하면 어떤 이유로 든 빈 배열 "[]"이 반환됩니다. 나는 그 배후의 추론을 이해하는 것처럼 보이지 않는다. 생성 된 html을 확인하면 \ t \ r \ n이 (가) 많이 보인다. 문제가 내 코드와 어떤 관계가 있는지 확신 할 수 없습니다.BeautifulSoup 빈 배열 반환

url = "http://www.hkex.com.hk/eng/csm/price_movement_result.htm?location=priceMoveSearch&PageNo=1&SearchMethod=2&mkt=hk&LangCode=en&StockType=ALL&Ranking=ByMC&x=51&y=6" 
html = requests.get(url) 
soup = BeautifulSoup(html.text,'html.parser') 
rows = soup.find_all('tr') 
print rows 

또한 비 '는 .text "대신"html.parser "의"LXML "을 구문 분석을 시도했지만 같은 결과를 만난다.

편집 : 해결 방법을 찾아서 셀레늄을 사용하여 페이지를 열고 대신 원본을 가져옵니다.

url = "http://www.hkex.com.hk/eng/csm/price_movement_result.htm?location=priceMoveSearch&PageNo=1&SearchMethod=2&mkt=hk&LangCode=en&StockType=ALL&Ranking=ByMC&x=51&y=6" 
driver = webdriver.Firefox() 
driver.get(url) 
f = driver.page_source 
soup = BeautifulSoup(f,'html.parser') 
rows = soup.find_all('tr') 

답변

0

이 페이지는 서버에서 데이터를 가져 오기 위해 javascript를 사용하며 javascript는이 링크를 사용하여 Chrome의 dev_tools에서 데이터를 요청하므로이 링크에서 필요한 정보를 얻을 수 있습니다.

http://www.hkex.com.hk/eng/csm/ws/Result.asmx/GetData?location=priceMoveSearch&SearchMethod=2&LangCode=en&StockCode=&StockName=&Ranking=ByMC&StockType=ALL&mkt=hk&PageNo=1&ATypeSHEx=&AType=&FDD=&FMM=&FYYYY=&TDD=&TMM=&TYYYY= 

내가 사이트를 긁어 할 수있을 것입니다 셀레늄 드라이버를 사용한다면 셀레늄

0

문서에 실제 HTML 행이 없습니다. 행은 JavaScript에 의해 동적으로 생성됩니다. BeautifulSoup는 자바 스크립트를 실행할 수 없습니다.

+0

를 사용할 필요가 없다? 그렇지 않으면 최선의 해결책이 될 것입니다. 편집 : 방금 그것을 시도했습니다 덕분에 – kimpster

+0

이 토론에 따르면, 네 수 있습니다. 나 자신을 결코 시도하지 않았다. http://stackoverflow.com/questions/14529849/python-scraping-javascript-using-selenium-and-beautiful-soup – DyZ

0

html.text 변수의 내용을 보면 내용이 동적으로 생성되고 유효한 요소가 없음을 알 수 있습니다.