2017-02-27 2 views
3

나는 BeautifulSoup를 사용하여 tcgplayer.com에서 유희왕 카드 가격을 끌어 오기 위해 Python 스크립트를 만들려고합니다. 이 웹 사이트에서 카드를 검색하면 다른 판매자의 여러 가격으로 검색 결과 페이지가 반환됩니다. 내 목표는이 모든 가격을 끌어들이는 것입니다. 아래 예제에서는 "A"셀 사육 장치라는 카드에 대한 검색 결과를 여는 해요 :Python BeautifulSoup 빈 목록 반환

import urllib2 
from bs4 import BeautifulSoup 
html = urllib2.open('http://shop.tcgplayer.com/productcatalog/product/show?newSearch=false&ProductType=All&IsProductNameExact=false&ProductName=%22A%22%20Cell%20Breeding%20Device') 
soup = BeautifulSoup(html, 'lxml') 
soup.find_all('span', {'class': 'scActualPrice largetext pricegreen'}) 

며칠 전, soup.find_all 라인을 실행 올바르게 내게 필요한 정보를 주었다. 그러나 이것을 실행하면 이제 빈 배열 []이 나옵니다. BeautifulSoup이 빈 배열을 반환하는 것에 대해 꽤 많이 조사했습니다.하지만 며칠 전만해도 제대로 작동 했으므로 그 중 어떤 것이 적용되는지 확실하지 않습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있습니까? 미리 감사드립니다.

답변

2

당신은 실제 브라우저를 사용 스크랩 selenium을 사용해야합니다

from selenium import webdriver 

driver = webdriver.Chrome('/path/to/chromedriver') 
driver.get('http://shop.tcgplayer.com/productcatalog/product/show?newSearch=false&ProductType=All&IsProductNameExact=false&ProductName=%22A%22%20Cell%20Breeding%20Device') 
prices = driver.find_elements_by_css_selector('.scActualPrice') 
for element in prices: 
    print(element.text) 
driver.quit() 
+0

이것은 완벽하게 작동했습니다. 고맙습니다! –

0

이 웹 사이트는 Incapsula라는 서비스를 사용합니다. 웹 사이트 개발자는 봇이 콘텐츠에 액세스하지 못하도록 Incapsula를 구성했습니다.

관리자에게 문의하여 액세스를 요청하거나 API를 요청하는 것이 좋습니다.

+0

셀레늄 사용을 나를 위해 일하지만 그것뿐만 아니라 며칠 작동하지 않을 거라 생각합니까? –

+0

셀레늄을 사용하면 실제로 브라우저를 열고 모든 작업을 수행하므로 지금은 괜찮을 것입니다.하지만 앞으로는 기회가있을 수 있습니다. –

+0

셀레늄을 사용하면 신뢰할 수 없습니다. –