mechanicalsoup没有找到现有的标签

时间:2018-05-06 09:39:50

标签: python-3.x mechanicalsoup

我的问题:直到03/31/2018我的函数get_settldays()返回了预期的日期值。从那以后,settlDays.contents是空的; 但是在Mozilla浏览器中检查此标记,有预期的内容

import sys, mechanicalsoup, re, datetime
def get_settldays(soup):
    settlDays = soup.find('select', id="cmeTradeDate")
    settlDays = re.findall('\d\d/\d\d/\d\d\d\d',str(settlDays.contents))
    return [datetime.datetime.strptime(adat, '%m/%d/%Y') for adat in settlDays]

url =  "http://www.cmegroup.com/trading/equity-index/us-index/e-mini-sandp500_quotes_settlements_futures.html"
browser = mechanicalsoup.StatefulBrowser()
try:
    browser.open(url)
except:
    print('Error:',  str(sys.exc_info()[1]))
    browser.close()
    quit()
soup = browser.get_current_page()

settlDays = soup.find('select', id="cmeTradeDate")
print('\nsettlDays', settlDays)  #remains empty??
print('\nsettlDays.content', settlDays.contents)
browser.session.close()
browser.close()

有没有想法为什么settlDays.contents仍然是空的?

1 个答案:

答案 0 :(得分:0)

使用javascript填充\n的内容。没有javascript,内容只是n > 0而不是日期选项列表。您可以通过进入设置 - >在Chrome等浏览器中验证这一点。内容设置 - > JavaScript并将“允许”切换到关闭位置,然后重新加载页面。

由于MechanicalSoup不支持javascript,您可能需要考虑使用Selenium之类的工具。