2017-02-27 380 views
3

我试图创建一个Python脚本来使用BeautifulSoup从tcgplayer.com中提取Yugioh卡价格的价格。当您在此网站上搜索卡时,它会返回一个包含来自不同卖家的多个价格的搜索结果页面。我的目标是拉出所有这些价格。在下面的例子中,我打开搜索结果的一个名为“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

使用硒不可靠 –