beautifulSoup的行为不一致

时间:2015-01-22 05:09:30

标签: python web-scraping beautifulsoup html-parsing findall

我正在尝试创建一个python文件,它提供实时库存更新。 我尝试了for l in code.findAll('span', {'id' : 'ChangePercent'}):

<span id="ChangePercent">-0.71%</span>
它有效, 来源:money.rediff.com/  但在雅虎财务上使用相同的技术doenst工作.. 即

price = code.findAll('span', {'class' : 'yfi-price-change-green'})

无法找到:<span class="yfi-price-change-green">(1.95%)</span>

来源:finance.yahoo.com/

这两个代码: rediff:http://ideone.com/kslILJ 雅虎:http://ideone.com/egGQLv

1 个答案:

答案 0 :(得分:1)

您在Yahoo Finance Page上寻找的值会定期通过浏览器中的流API调用进行更新。仅使用Reliance Industries Ltd (RELIANCE.NS)urllib请求requests网址,您就不会获得这些值。

最不复杂的选项是使用selenium自动化真实的浏览器:

>>> from selenium import webdriver
>>>
>>> driver = webdriver.Chrome()
>>> driver.get('https://in.finance.yahoo.com/q?s=RELIANCE.NS&ql=0')
>>> for element in driver.find_elements_by_class_name('yfi-price-change-green'):
...     print(element.text)
... 
0.55%
0.40%