Python BeautifulSoup返回空列表

时间:2017-02-27 00:22:00

标签: python web-scraping beautifulsoup

我正在尝试创建一个Python脚本,使用BeautifulSoup从tcgplayer.com中提取Yugioh卡价格。当您在此网站上搜索卡片时,它会返回一个搜索结果页面,其中包含来自不同卖家的多个价格。我的目标是提取所有这些价格。在下面的示例中,我打开了名为“A”细胞育种装置的卡片的搜索​​结果:

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 个答案:

答案 0 :(得分:4)

您应该使用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()

答案 1 :(得分:0)

本网站使用名为Incapsula的服务。网站开发者配置了Incapsula以防止机器人访问它的内容。

我建议您联系他们的管理员并请求访问权限或向他们索取API。